Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">5 R+ v W2 x4 ~+ S! a5 f
- <p>{{ message }}</p>8 q' S+ A* y( ]" ~2 T8 ^
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">( H1 `* C; L; x4 t$ ~) [4 s
- <div v-html="message"></div>
( t6 H! Q# j2 b/ S' h - </div>
F9 r; O F0 D) R - * w" |2 M; n4 J9 L: J$ t$ |$ F
- <script>
* n- R, t8 E2 E - new Vue({6 R: U' ]' n$ Q' I' A, T
- el: '#app',
3 F; n! r6 T- s7 J, s9 I, @! A - data: {
' j+ ~. c" v2 J - message: '<h1>菜鸟教程</h1>'0 d& H/ g# f; l4 G' D9 @
- }
' r! g3 B1 z' T; \ - })
: ?2 a, R1 M+ e) B0 ~8 K - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">% |7 I' B8 u5 W" y4 h" ~$ y) E1 T
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">1 U" ^6 i* h7 p2 _% D
- <br><br>
5 Z3 v. q! \ F" @6 ` B, Q% q. [ - <div v-bind:class="{'class1': class1}">: A* s) t4 b# G) |
- directiva v-bind:class( k, h* [% B; I Y
- </div>
, y6 O+ ] S e i - </div>
5 z% |! w8 }* G* I( u1 p0 _: o: ? - ) ~, H0 o: r% @2 ^0 L
- <script>
( N- ^/ h0 Y' M# _7 v - new Vue({
( E9 _8 B5 w8 t5 ^# Y# ]9 n0 }% T) ` - el: '#app',) K' \& d+ K% O' Q& t1 t# j6 w
- data:{1 p! K& ?7 S4 L2 v9 r0 r8 i' y
- class1: false* i2 h8 `8 r7 A" `, G
- }
% w) o. X4 D2 y - });
3 G4 r ~) p( h% q' G' Z; f7 n - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
4 Y, S7 X4 I' q, O - {{5+5}}<br>( V1 u8 p. Z1 u
- {{ ok ? 'YES' : 'NO' }}<br>
! v& E" q" @+ M0 I - {{ message.split('').reverse().join('') }}1 D' B( s' x8 `, [! o7 n# v+ t8 x; t
- <div v-bind:id="'list-' + id">菜鸟教程</div>
' ?* f% O$ Y2 G0 a- B' j7 q - </div>% M2 K. k L2 x* l: u) i% m
- k& ]$ z+ E6 {3 W1 E
- <script>1 z! U# ?2 P; j, C' Y2 c
- new Vue({
6 Q( }# [& a4 p9 ?2 Q. l - el: '#app',; h8 W8 ~2 t/ `" e: m% ]
- data: {$ L+ d5 v7 {0 k3 e5 c. `" k
- ok: true,
: N$ }* j9 G0 Y8 J1 l) t& N+ [ - message: 'RUNOOB',& K7 ]+ }$ W* [* X
- id : 13 h( y& p# l7 t1 w7 e
- }
! ]' a' @0 H) D' @, R, T s' v/ P - })
2 a5 J; X) D, w" B) j, j# q" D8 N - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">3 _" F; e# A6 A5 N" N$ M
- <p v-if="seen">现在你看到我了</p>8 k- @4 ^5 d" f- z: a
- </div> B: q; \) ?& \) F8 p
-
7 u) A9 P; b2 X8 c0 I* f - <script>
. q5 ~; e# Y" i0 ~* q - new Vue({) [8 z, A9 {( B# q% s9 a8 N
- el: '#app',
\- o! a7 `# q4 e( B - data: {
- [3 \1 i0 h: h" V3 B - seen: true$ E( q; `! ^$ m C
- }
6 v* S' W. B( s/ z- c/ E - })6 h8 D4 u" }1 i8 q
- </script>
复制代码 ' J& l5 Y1 R$ N
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">% E5 K# T8 ^8 |, |9 l2 s
- <pre><a v-bind:href="url">菜鸟教程</a></pre># q( e9 X) W Y; J; R' i
- </div># ~9 B# g7 Q9 |' {1 h
-
! ]1 k) e$ y, j0 O4 |4 Z3 L - <script>: s# E, o, p' j6 Y- ]. q9 Z8 n: B7 M
- new Vue({- v: ~ r {4 M) g) q. ]- n
- el: '#app',
8 \- S- Y* T f3 Z3 l. ]8 x6 j$ r - data: {
) L1 J+ b1 o. Q - url: 'http://www.runoob.com'
6 P% }. V: [) _- V$ [( ~( x2 H - }
/ ~2 n, L, @3 x7 d( y! n - })
2 ~0 b' S( {0 j! k# R& l - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码* d4 _6 _. y6 d# K- ?$ A
- <div id="app">
) V, ?' z$ p, P! _% I( C' t. g7 S - <pre><a v-bind:href="url">Vue参数</a></pre>% ^+ h: x \6 A3 R" Y
: h: Z5 `" Q" u6 [7 q" X! b+ a+ B- </div>
/ h) i0 v' V& {, v
6 }* V% O& U; Z# k8 o- <div id="app2">( a( V% b9 K8 ~ p8 j2 s
- <p v-for="val in arr">
@: F- M# ?0 a) U* h: h2 ^' J - {{val.a}}
- j( C/ L0 s4 d+ t/ K: e- C - </p>
# G8 c7 t i7 l1 H3 f4 x - <a v-on:click="tap">点我</a>
+ d# N; O/ z6 S" o - </div>: n4 W8 K. x$ z2 H6 n! `0 x
* e6 J2 Q: A- I( _& n. f; H0 P' u! S* }- ; h @2 B( a5 D! Y! o# Z/ g
- <script>! v- N9 D S6 Q4 d# G$ K/ f1 y
- new Vue({
R/ Y7 V$ F# n% p) D2 m - el: '#app',3 S& p! Z/ _" I
- data: {
; k; `5 x x3 D; |" L - url: 'http://www.cncml.com'% w7 @: |" e3 ?' B1 r7 c, d6 e
- }/ M! }; M+ w+ q* n0 y3 a" U5 E
- })" u) Z0 T$ t4 z! m
- new Vue({ M! p, B+ ^' s
- el: '#app2',; P6 @1 R; b' y3 b* B- D, B
- data: {% i$ k- D! F0 g, g* I
- arr:[
$ k/ t2 [$ F: T2 N; n1 A - {a:'bb'},
8 Z( k: P3 \4 X6 o; N$ q. D% m7 r - {a:'cc'}
+ [8 K& p0 N1 c4 P2 |, Z+ ^+ g3 D$ V - ]
# l3 k$ p7 ^( ?4 r7 [ - },
- E6 ~3 o% Q7 G% k' ` - methods:{
* e+ m9 p/ {& X* c5 C; X3 w$ z2 k - tap : function(){! [) V' z) _& }
- this.arr.unshift({a:'new'})
0 @8 }9 q$ B$ O0 z$ m9 j w - }6 t' j3 H0 r' E7 }& o2 K
- }
2 A, t2 {. V* o2 p8 I1 } - })1 f; o% [; W/ R$ z! [: k( e: R
- </script>
复制代码 m1 N/ _% ]$ C& a! C
& ], M. B2 i1 X( h
在这里参数是监听的事件名。
1 c3 }0 i3 F3 n |