Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
+ k- y. i$ K" W h, x) _ - <p>{{ message }}</p>* R" t& c; w7 u/ T
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">* w' Y1 C& r+ F$ l
- <div v-html="message"></div>7 Z7 R" X8 z7 |" k$ p
- </div>3 \* I/ a( q6 L; k
- 1 q; M$ ~8 D& ]# \
- <script>: A. U6 g* M: \
- new Vue({' i5 O$ A8 E6 [( Z4 y, W" `6 K1 X
- el: '#app',% ?, M: F5 x+ n2 ?* m* x2 m( N
- data: {
0 g" U; _$ e/ @1 k$ }* } - message: '<h1>菜鸟教程</h1>'! ?3 L1 H3 ^3 j) e* c
- }+ i1 V6 h2 p2 j* Z! Y/ P
- })" z" k( C$ p+ p9 D6 M% g" ~+ s" o
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
& R- h) Q- a; ~% \ - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">5 W9 `: \" u- c8 v
- <br><br>0 j. t8 @8 k) J
- <div v-bind:class="{'class1': class1}">/ V4 l: C# N! g
- directiva v-bind:class
$ r2 m3 X( T8 F+ Q - </div>0 `& v ~! s5 Z8 R& ^( d
- </div>
2 i" r3 c) Z! V5 s b5 f, j -
8 [* @1 I5 Y( ]- ^8 N - <script>
- E1 k! U0 ^* E y [- ~, J9 E - new Vue({6 m1 Q/ \& P) K
- el: '#app',7 X! Q7 E1 `. L" `3 b
- data:{) q8 {4 S! j& J) l; v" P
- class1: false
1 T0 d% o* e( \ - }
Z! B' i+ t" ^& A: i( c/ D - });
$ n3 g$ s q# \' `. W, D" A - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
, n- S' [2 o3 V( E; ]+ l - {{5+5}}<br> X V8 @0 H, M+ j1 E
- {{ ok ? 'YES' : 'NO' }}<br>
s9 L, T6 n: o; P2 r - {{ message.split('').reverse().join('') }}
5 P. Q# R6 Q% x( r - <div v-bind:id="'list-' + id">菜鸟教程</div>
4 L1 A6 f, J+ _& n/ F - </div>
) \ u3 w' f" v3 x. F0 y% t2 O/ | -
" J5 S4 A1 G0 [+ c7 y) \2 F - <script>- T: ^0 Q" Q" K" M6 r8 w# r- Q
- new Vue({) I$ C) C# M/ P9 L* Q% e
- el: '#app',7 L8 c$ F& q3 F o
- data: {
% Z& g. V: B \5 @& A - ok: true,
O$ u; ~7 {1 u5 B - message: 'RUNOOB',0 N3 ^' s: {7 e0 t* ?: c2 c. {# D
- id : 1
6 o. j1 c" |) K, u% \ - }
+ }+ x/ u, z+ V& D2 b% E - })
% K1 J. |& B: z2 }& t; K3 g8 ? - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
y1 u% v4 g! q# M. w2 r - <p v-if="seen">现在你看到我了</p>
8 n& R6 ] o1 g8 e" ` - </div>4 a# s: @; C' |+ d, ]
-
$ C0 ~$ y. E: V6 k - <script>
9 P5 A t+ s. _ - new Vue({
3 h9 B( w5 p0 [ - el: '#app',
, L7 Q- ]: ?& Y - data: { Q" A1 {8 f( e
- seen: true+ ~0 T3 g. s, e
- }
|9 N7 D5 ^+ A$ z - })
" J/ Q7 l$ H% u* I% D1 p - </script>
复制代码 D7 n* c; o" v1 \2 }4 E4 b+ e
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">8 m" ~$ Q2 f/ _4 @9 i0 H+ I
- <pre><a v-bind:href="url">菜鸟教程</a></pre>* A% k! Z& b. c1 O F9 |
- </div>
$ \6 |1 q* b& r8 D& G& f$ E1 W - ) D( t& [ y* E4 R% U% ?5 M
- <script>
+ i7 \2 R8 c4 f+ e - new Vue({
$ Q! G+ Y- \: P% _' x* m$ D2 d9 t - el: '#app',
7 m3 v' ^9 O' G; T - data: {, V) h5 l5 ?+ W
- url: 'http://www.runoob.com'
; J" |# Z+ m8 b4 t - }2 S, F7 v1 c) Q
- })
# b/ J) X$ R% m) z& }5 V - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码) S( b" |- q( b2 }: w
- <div id="app">
. [' x2 m% I9 w/ H0 v3 G# y* W5 Y, R" B - <pre><a v-bind:href="url">Vue参数</a></pre>
3 W" {' Z! q& a9 ]3 s1 r. C - % t3 M7 a( `5 {" L
- </div>8 b* J0 {2 V! j; O9 M$ a/ ]
- 9 ^, A; n& o1 p; R! g) [0 ~
- <div id="app2">8 A- A7 i! m0 a1 {# \* E3 {2 J9 A, {4 L! |
- <p v-for="val in arr">" Z2 k, K3 [, k3 u( N5 j! H/ t
- {{val.a}}% ^2 h7 b7 i$ ~6 C
- </p>- ~3 t' e: J/ p2 g: ^+ ^
- <a v-on:click="tap">点我</a>3 P, k1 u! ~+ L3 p) A* X- }7 w
- </div> [0 q( r" h+ ?9 e" S/ k( v
' i# p d9 r8 ]: X7 n
2 m, ~+ M' k! D8 p' Z1 n- M- <script>3 p! `7 M$ E3 \6 e$ T9 k/ X0 f
- new Vue({# s. y% A& [7 b
- el: '#app',9 h+ y& M5 ^5 _( y
- data: {1 }8 u+ o# ^, i$ e
- url: 'http://www.cncml.com'% X0 w V, ~& f
- }
5 E. f' ~ Q! I# t - })
5 x6 o: r0 |& r6 ] - new Vue({
6 n6 J+ l6 s+ r# O$ l, ~. I - el: '#app2',
$ C' j: c5 H/ m - data: {
3 |/ A& F, k `- i6 ` - arr:[; |6 J( p3 j l5 B5 M/ W
- {a:'bb'},
2 l: Z+ n8 E' j3 l) P - {a:'cc'}; s( T, i9 i3 g
- ]
0 y1 B" E2 F( Y - },6 V& o y7 N/ [# a2 |0 o0 N
- methods:{
6 N4 n& u8 x6 w/ { - tap : function(){
1 K3 W$ P" ]+ Q* {( J- c& U$ J - this.arr.unshift({a:'new'})( N6 y5 g( d) U. Y: O3 |
- }* v5 ]% n) |! d1 ]1 r- d4 W+ T8 A
- }
$ Q6 s3 H6 M0 I- n( ^: _$ o - })1 v7 I) O. A! \! c# W I& q
- </script>
复制代码
( P0 M) h4 D! M, v, ?$ F4 f* U \; L4 i8 `! n- f& o+ Q
在这里参数是监听的事件名。
* [6 b$ {* Q. u8 F$ E+ y5 j+ p! _+ q |