|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">/ o: q7 d1 L& P" w: Y: N3 S% k
- <p>{{ message }}</p>
. C) P; Z4 V9 l( {% e - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">' s# h# i# }: B, |+ m/ y3 f+ x
- <div v-html="message"></div>
% z, H6 `- q- }5 p$ u# Y- ?' [% } - </div>
. v' f9 _1 T. R! u3 J, s3 S4 A( y - 1 K* M: o' a: f- P( B! T& l
- <script># o# Q$ x" L. y. d
- new Vue({
, S- q# b" d5 b r% N- ~ - el: '#app',: `( S) ^% _9 X& M7 H+ s/ c" U
- data: {
& \, ^% }% g- a4 R - message: '<h1>菜鸟教程</h1>'
, Q0 f7 ]; S/ i3 [7 j& g - }* y+ y0 c( M6 t7 ?0 T n. u( M
- })* C, g! g. w& m" d# k/ {2 L
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
! u2 j4 u( h$ R - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
+ D: o/ s$ `+ i0 P# {& W% J, O - <br><br>
8 D4 j" X- ~0 ^4 b- o - <div v-bind:class="{'class1': class1}">5 C& Y5 ~9 B C7 o$ J( o9 W
- directiva v-bind:class6 E* u0 x% M, j0 I9 q
- </div>
1 |% s- i4 i+ u2 M5 P - </div>
1 P7 {% `$ z0 {( `, E" Y; k -
& c4 e9 L) z% l* r/ \4 C - <script>0 r8 q: {% ]: X9 B0 T- m# b
- new Vue({
$ e M# H- d8 z+ t - el: '#app',
# Q/ X. {, q& R4 l7 o - data:{
3 z$ M, M2 v8 l4 h5 e, S1 a, [ - class1: false! E% O; ~5 p% k1 q& C ?# \- n
- }
* L6 v6 P' g2 [) k% D( I - });# x5 d; ~/ }, r! ^; \6 I6 \
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">/ @7 `8 ^ A. e g) Z
- {{5+5}}<br>$ {/ ]! c$ g& y2 n) G% a4 L& ?# O6 n
- {{ ok ? 'YES' : 'NO' }}<br>2 _1 Y& N$ a: y6 Z& B% b: I3 @
- {{ message.split('').reverse().join('') }}
8 h7 N) @1 v9 R( z. q' G - <div v-bind:id="'list-' + id">菜鸟教程</div>
( k+ z% `' Z+ j# k - </div>. w' ~4 o' X% J' \" h4 V
- $ @4 c0 r' ~ @! N9 F4 D- r
- <script>
* H5 q d7 S( k1 x/ d- h - new Vue({
, u' f- X& a4 Z - el: '#app',
# ]1 g, C4 F5 B( {4 R( T9 K) Q - data: {
) n. @' p1 M! @& C+ k0 E - ok: true,
7 Y, O+ _9 \0 }5 k( D1 c - message: 'RUNOOB',5 F( {# D. k a$ K! R3 H
- id : 1
$ q5 `0 }6 w) v, j; }1 S8 _ - }
5 P, Y- D ?5 x" v) |! Z - })5 N' Y) s `. d% `; I E/ ]
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
5 E! ]) P6 T! f. s { - <p v-if="seen">现在你看到我了</p>
& @& I0 V+ C6 b' ~ V% m - </div>
1 L4 {% U8 ^2 k" y - 7 P0 @$ H" W, j: [" d
- <script>3 H( q. q* Q( t" U! f& d6 x& t. i
- new Vue({& R; }, }7 o( y( G5 ] X) K5 i
- el: '#app',/ |: d7 e% A: H$ B! s' S
- data: {
\; B% N% J+ \+ d8 u2 \7 X - seen: true
' e2 ]1 u7 T% G - }1 t6 T4 ~0 y: q. w0 t+ g
- })% Z2 p0 w4 \- f# F5 L
- </script>
复制代码 5 Q% u8 V( c7 u
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">! D' @) H, O" x' Z" h/ v$ C0 }
- <pre><a v-bind:href="url">菜鸟教程</a></pre>
}, t! _( K- ]5 L - </div>
, K8 K, V2 ]7 P1 p - ; O3 i* |) l# X) e5 t! E3 j
- <script>
2 N N4 m5 b1 r - new Vue({
- K: t5 O3 u3 Y - el: '#app',( D6 _' w8 x( c" |8 }8 A& ]0 e
- data: {! R$ ?/ y' ]: @4 k6 \/ _/ L
- url: 'http://www.runoob.com'& ]. G( m. ~! C4 y# O" p) Q
- }
3 _4 z* l8 m6 U% | - })6 `* X C3 }% T$ P
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码7 w+ {$ C7 b- W% ^) e D+ @
- <div id="app">1 [; F. d. w% v
- <pre><a v-bind:href="url">Vue参数</a></pre>/ k3 A& _- C* c, A
) G C# j% l8 C$ p: ?4 S- </div>( H. S9 L) k3 f5 Z
- 0 X5 P6 x" y6 B# p& W# U8 \& Z( I
- <div id="app2">
3 w Y3 P5 J+ X& Z$ `: e9 `; S) F - <p v-for="val in arr">+ o" @/ [- y$ i4 w2 I8 `" L
- {{val.a}}
- [% r! V3 c, K& | - </p>
$ n, H. c% {* m, E2 @ - <a v-on:click="tap">点我</a>7 [) Z( u& F- _5 q
- </div>7 O* O% [* Z. Y0 X, N
: w9 R/ Y9 T/ q% q. w- 3 \2 b! B- [( l7 `8 s/ `
- <script>/ b% k E7 }, r! D5 L" b2 C3 r9 C" K
- new Vue({& Z v$ v6 { H, |2 H
- el: '#app',& K& K) c7 w! m& k
- data: {
+ h) z+ _0 H2 L( q+ a/ N- _ - url: 'http://www.cncml.com'& |& G$ Y1 x9 b+ C& {+ x# J
- } D6 u6 }6 I# U# j
- })% B% n: e, g* M; \4 n0 W
- new Vue({
4 f& F7 | N& Z* r0 Q7 X - el: '#app2',* L) J; C; M4 X) n! R6 F
- data: {
' `* X3 Z% U. |1 {2 _3 H3 z" g - arr:[6 S. m. ~$ E! O: P; _
- {a:'bb'},, P& X& R$ t; ^
- {a:'cc'}
- G: x ]4 Q* E0 i' _: P t) F, [ - ]
: y4 D( r8 x0 l; d( g5 _. s - },- P9 w |, w* d: t, P
- methods:{
! U8 c% l. k* y8 b - tap : function(){
# a$ Y# ^1 h( n - this.arr.unshift({a:'new'})9 P" C, K2 f6 L4 m+ \& w
- }
) O/ S" l5 U3 Z: s+ x% i/ s2 B - }+ r# w0 B6 h5 A& I- u
- })
; B2 x4 O; r: c0 Z* | - </script>
复制代码
& h' Z/ c, p( @3 t. e* z, v- W: G. J7 _: o
在这里参数是监听的事件名。 % u9 l" C8 S( K
|