Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
) S Q( \4 t- s" K1 X/ Q2 r9 _1 M& h - <p>{{ message }}</p>* c' a5 H& d0 a+ a8 h
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">: p0 C9 n2 {4 T0 d& A/ t' N* V' t7 K
- <div v-html="message"></div>
2 i; I* e5 ^0 p2 v t4 l - </div>
3 K+ C' Z: r& V" U/ b -
( M* [: D6 }3 L7 G8 N6 Q1 N9 M - <script>
( r! H4 _4 E" d8 e: L4 x/ M - new Vue({$ @/ Z/ c* {1 S/ |- B; f
- el: '#app',8 ?: c; J, w6 V C3 c1 d
- data: {
- y7 I. s& h7 B - message: '<h1>菜鸟教程</h1>'( f8 N' D# w8 S8 d, [: H
- }0 O0 E- O. ~7 S7 B5 a7 p. R$ j
- })
/ e% `5 H2 w0 \% o/ L, ^ - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">/ i7 J* r8 s* f7 w- J
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">3 ?/ c: X' }% u" J
- <br><br>
4 h+ h% {/ ?+ @' u- Q+ p - <div v-bind:class="{'class1': class1}">
" M& h- s! L, K - directiva v-bind:class
! S3 |, ^ o( `$ t% X: J1 P: v8 S - </div>8 _6 g/ ^: i0 B6 \% n' O/ }; }
- </div>
" n) l; j! ]4 d. d+ y - : C3 x& G! P6 c/ z% l( z+ Y
- <script>
" m, Y6 ^4 b: |$ K' _; ? _ - new Vue({
7 \6 Z3 S( u( F - el: '#app',
+ d! a, M: a( ]; `& c' S - data:{
( t# f% c1 s- @7 } - class1: false
+ E) P, e6 l- I) K8 w9 |; I - }1 d5 s- b8 A+ t: [& a1 N3 l$ \+ j+ C
- });% m8 W( S! Q1 o* M1 P& D) }- E
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
& s: A6 D6 W: ^7 x9 w/ x! f - {{5+5}}<br>4 D: R, a% ~" n, n) `/ {" ?
- {{ ok ? 'YES' : 'NO' }}<br># A. f4 V: |" m2 R+ f- d1 {
- {{ message.split('').reverse().join('') }}+ g. x: ]- M0 K$ `/ m& A, [$ c0 `
- <div v-bind:id="'list-' + id">菜鸟教程</div>
+ D, [' H. x4 D6 @ - </div>
! U$ c& m1 C @* Y - $ Z# p* i0 a, ?' j
- <script>6 {# H( K/ g1 ?$ z7 q) [# ?
- new Vue({& o$ Q; N I) P6 Y) f
- el: '#app',* b' b: B2 q" P- J% K# {
- data: {
6 P9 u% K9 q7 D5 l1 } - ok: true,
: {. P/ h* |6 R3 N$ {, _ - message: 'RUNOOB',( F" J! N3 d1 P$ M7 Q- S/ C8 i
- id : 1! c! A3 y' {& d7 M9 V5 K& {
- }
' r6 R, Q$ G9 k( P) h. z - })- l5 \: x$ q0 z5 u. X
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">$ U& Z' o; K6 ]" ^5 @7 D# D+ E5 Q
- <p v-if="seen">现在你看到我了</p>9 o4 m: [. K6 k* p0 J5 b
- </div>
8 u" l+ H* I! \( Y; i4 w -
8 ]. [* e& N: ]5 t: g - <script>
* h0 c4 b7 v; ]- @8 d - new Vue({
4 i8 y0 W3 U6 ]4 w3 f. Y- r - el: '#app',4 l- C7 g$ c) p% p6 e9 g
- data: {
4 k1 a# X6 e6 p" p - seen: true9 p8 W% B" |6 N* w* d$ T; J
- }2 u# T* W" t) I# ?) j9 h
- })
) p, f3 \$ z% l: W9 k* s' _ - </script>
复制代码 % Q0 A/ M- s. F9 r5 T. p0 e/ r
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">! B; ?" D' ~( f+ c5 ]% W
- <pre><a v-bind:href="url">菜鸟教程</a></pre>8 t) e5 L3 U1 p5 d$ O; y
- </div>
1 |. l& p( E$ o1 @; m2 ? - ' O/ N7 Q) Z' S+ K. Z8 W
- <script>, D0 f# X! |- J+ `
- new Vue({
8 q9 i: x" B1 M - el: '#app',5 ^7 H2 l/ o9 e
- data: {
" |. L) a. }. r0 U - url: 'http://www.runoob.com'
# U+ F7 g" j3 G/ k - }/ i5 j. e- f$ ]3 R; }1 \' L8 t
- })
& W, J' f# c6 v/ Z* Q - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码' V* Z1 z: t) Z% Y) d0 g& o
- <div id="app">
4 O/ @, J1 }4 ^# A, k, \2 A - <pre><a v-bind:href="url">Vue参数</a></pre>: f8 P1 _+ }! k, g; y6 A
# K7 C) U! N$ m6 X. C! f- </div>
3 y$ [0 {& O' l) v. ] - - k8 s( `' v! c% ^+ o
- <div id="app2">
, F. l$ x+ C* b' T& e# O: m - <p v-for="val in arr">, }7 V8 E- o3 `/ E% L. V1 k
- {{val.a}}
0 q" y" O: o* m0 I( J3 ]9 ?* L3 ]) w - </p>
* S- u3 z- q' s - <a v-on:click="tap">点我</a>2 {3 p" |1 _( ^) \! b
- </div># }0 V+ ]7 T* U+ k# S" S
- % j3 |* ~' _- l( ^6 x
' ]; B, S5 _3 o5 |$ R% Y) M- <script>
: R2 |1 W9 t+ m8 r - new Vue({
) l3 d* y. `% \3 P4 ~1 n - el: '#app',' l* K- v. O7 p% h, |
- data: {
3 x& w: H9 ?0 ]" ^7 S. N - url: 'http://www.cncml.com'
- ^6 V9 u4 M2 ~8 a6 w - }
7 w3 c9 B1 }7 m6 E+ ? - })( I* a" H( {" s0 O0 U
- new Vue({( j0 o! C1 N; q5 A) Q' ?
- el: '#app2',
4 d7 }3 {/ Y. J - data: {- i5 L, `& w" m+ W: w
- arr:[3 T4 x! c9 [9 H! e
- {a:'bb'},. A1 a* m4 w/ R) i$ s/ @
- {a:'cc'}8 [# ^5 C: P3 V0 M/ d! n5 I
- ]
) g) c: r" F0 |3 B* v& p1 \ - },
; S8 q& Y( l$ \6 b - methods:{
$ D7 X# A2 ~9 }4 e7 \' [9 q% l% X - tap : function(){4 ]/ D1 h0 |5 f& c# g
- this.arr.unshift({a:'new'})
3 \2 q2 W/ c6 _; K8 c/ u! @7 p - }' e. O2 n* L% n# b
- }
6 M% d9 ?9 G1 P" @6 ^' i5 N - })5 ~6 V: q8 k' L: J# _
- </script>
复制代码 , _2 G+ U' q3 w$ U
# P# G: L6 W2 g2 ~& Z3 L
在这里参数是监听的事件名。
* V- R$ M8 }, p2 A% s1 n |