|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
) X& K# M' o6 U( ~7 D4 O8 i - <p>{{ message }}</p>0 N5 c1 W; @2 c" X7 J
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
0 a. }- B: {- V0 L - <div v-html="message"></div>$ o8 m9 |. J5 X3 r6 R
- </div>! R+ \3 h, o* _3 f
-
3 ~& X5 P/ w, e+ \: b - <script>2 B. g x+ ~7 M9 i" w6 Q; q
- new Vue({
/ A8 l. i6 C* I" I2 @* _ - el: '#app',& K) M# j, g/ P q7 ]) \: a( `. W
- data: {
* k) ?7 N4 _9 E* k - message: '<h1>菜鸟教程</h1>'
5 [# w4 M7 ^7 \+ J( ?. E1 y3 V8 ~ - }
( z& O1 f M8 G+ P# k) _4 D - })9 {1 T/ K _& f* Q7 m
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
% n; [, W; p) _: f - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">) c8 N; }. I0 |
- <br><br>, N. p8 g1 u$ W, | T! f+ n& I
- <div v-bind:class="{'class1': class1}">
% U" Z2 b4 W) T5 k' D - directiva v-bind:class- X+ q& g/ l7 B
- </div>; m2 e- C: i) v; `2 ?7 t
- </div>2 J, Y A) r1 H0 X( X4 i& \% c
- # z/ x5 z# Z g5 |/ W- z0 r1 C
- <script>5 h8 ?3 j; b0 T! E
- new Vue({
' m8 B# M+ p' X& f9 R - el: '#app',& ?* `# T1 W6 A/ Z3 o3 m# y
- data:{ T5 V/ f. N+ e2 j7 X9 R
- class1: false' e0 g# l, a+ A# Q4 m
- }
) m7 {% ^5 x6 [! T - });" ], }' ^2 L/ `6 u
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
- j( b: D. |! U - {{5+5}}<br>
" [ A( h' J; t `, Q - {{ ok ? 'YES' : 'NO' }}<br>6 J' T9 K% Y$ {4 t) }$ O( V
- {{ message.split('').reverse().join('') }}
7 I9 L9 I/ A$ a0 j3 q; _# x - <div v-bind:id="'list-' + id">菜鸟教程</div>% N2 N' {& d9 H3 @4 {/ I* J
- </div>, ]9 w) C+ U5 S2 h7 A
-
" I* e5 S- A7 Q$ Y - <script>- L* r+ C& C& s _4 ]; K
- new Vue({9 @# r" t$ r1 W% i
- el: '#app',$ Z3 X! v7 w9 I7 \( s
- data: {: ]* b0 r" e1 J) l; x, Y% w3 a S7 @
- ok: true,
. h4 N" r- g7 ~" ^" m K - message: 'RUNOOB',
: {: f; ]3 G/ Q+ G! I9 G% e - id : 1
7 f2 Z' r5 }7 g5 C - }
' l9 P) i# U, _* q7 e - })! ]/ j. X4 T8 J$ S2 c; m
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">) Q- `/ T& o7 n
- <p v-if="seen">现在你看到我了</p> y0 J* J8 U% a$ Y
- </div>8 X& R- G( S+ I6 {
-
( x4 L2 r0 c1 z6 m1 G7 _ - <script>
! T3 G6 v+ C: B- ] - new Vue({1 t! L$ `. J' d+ q; q( r
- el: '#app',
# W; K U2 a- {8 k( ^$ k - data: {
+ g7 O$ k6 G: W: d1 e - seen: true6 {( d8 B4 y, p4 r, Z- y
- }/ ^* f3 _3 \3 C3 } o& @. _
- })
$ n, v v7 O9 k( M - </script>
复制代码
9 ~% `( X% l* l m L这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
\2 {; Q+ b: u3 R; R/ I) b. c - <pre><a v-bind:href="url">菜鸟教程</a></pre>" r4 M3 c; O1 z, \8 i2 K& k
- </div>
% ~7 U& \$ K; J0 k - ! D* k3 h" O- g7 o2 Q
- <script>* J2 K$ ^( P$ t4 m
- new Vue({+ p+ `$ Z- c' Y$ }4 F( t1 e4 P5 Y, a$ J
- el: '#app',
) n+ z* Z6 k" Q4 ` - data: {
3 C4 ] K( V2 C- x$ E$ A( y - url: 'http://www.runoob.com'
+ E7 v8 ?9 ^0 |& _ - }
$ E7 f& ^1 |+ c - })
# N. q9 j# e9 D: r - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
! Y0 j v( O4 A, Z) D r
- <div id="app">' q' D& W: X9 U" m4 L
- <pre><a v-bind:href="url">Vue参数</a></pre>$ u$ ~4 O7 O# j0 L9 K6 H$ o4 ~
: [1 b c% y( Q7 S+ @- </div>, _7 X* J. l d1 F( R6 }, V
- ) o1 }$ s& K, D5 W0 ]6 t
- <div id="app2">& J3 y7 @; g* Q6 I4 J
- <p v-for="val in arr">
. P; s3 D! N- @. p4 o8 E' ]( G8 } - {{val.a}}
) p7 `8 W4 Q) z4 y3 H9 @; W - </p>% G8 ?" x1 a" s) C
- <a v-on:click="tap">点我</a>
8 [: ]: b' n9 x5 A2 p% H - </div>
0 _ g8 a" q$ k! Z) Z7 v
# }( P$ [6 \ J, c- # `* m9 ?4 W& Q5 r1 _
- <script>
# Z w" g% e& t- E - new Vue({
2 }, @! `1 O; s- b - el: '#app',
: t, u' s+ I& M0 z' P' s; a - data: {- J4 ]" R3 y% T5 {! M/ @: @- g1 N
- url: 'http://www.cncml.com'
" v- b) o/ k; r# |' W# d) V+ g - }) k I& G0 P0 F5 ]
- })
1 U! N% M. o& b- i) O r - new Vue({8 F8 J+ ~, f# T
- el: '#app2',/ E. Y! w8 w7 m5 V
- data: {2 f. ~. [' T5 K# A' k6 H6 h8 l) i
- arr:[
( R4 J. H- S" J/ R% l3 k# Z2 T - {a:'bb'},
8 r4 R( u7 Z. W3 Q3 I - {a:'cc'}
$ u: J$ [% B f6 u9 z/ G - ]
: @0 ?, t. A% i% Z8 v - },. O7 }2 W+ W+ x! e" g
- methods:{) o* \( h* { j0 C; C" ^& ^
- tap : function(){: V4 v; |1 _" T+ o: N8 z
- this.arr.unshift({a:'new'})6 t6 ~4 ~- t# z) T: S, U T
- }
5 D3 p5 P0 t+ o% C! d* s - }+ q! R0 N% v# b6 C: I
- })
! q* R1 I, ^; I R9 ` - </script>
复制代码 # V! b( y) A. q, k
" I5 L: K5 B4 T: o- e: k
在这里参数是监听的事件名。
( j2 O9 D5 a( r3 ?# ^7 { |