Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">5 r2 H6 X3 u% d, q4 Q/ C3 w% j
- <p>{{ message }}</p>; T5 z; J; B. n" U( L$ b
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">7 ^8 G" L! V: N+ ^6 S. o9 [, v/ s
- <div v-html="message"></div>
/ I: c# `+ {- I; ^2 `) s: M" p4 ~ - </div>) w _4 r H7 q% K, r" O
-
' H9 _# }; N# E2 e - <script>
2 X) x4 @0 m# ` - new Vue({2 m' m" h* e! h) |" K0 j
- el: '#app',# A" v1 h. K% q
- data: {
. w8 ^. M% t2 |, a: d9 c - message: '<h1>菜鸟教程</h1>'5 Z7 g& x7 a0 j, |3 V3 f
- }
; Z) A- S" k! l* O- U* u) t - })" ?3 E" l+ w6 R; B$ f
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">7 d, ^1 T0 Z7 c, _7 g: \. @+ x; b
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1"> B* u0 \* U( f. z
- <br><br>
" `1 V( \& S2 Y7 f - <div v-bind:class="{'class1': class1}">' o' K4 V% G% l7 o( y* G
- directiva v-bind:class. g- z+ v1 V% t( j# L% ^& V2 t* Y9 C, Z
- </div>
) X f, {# S/ C - </div>
6 T R+ i( W, w8 X9 r -
3 ^3 H8 w* ?. l4 C c6 A* e1 E - <script>
1 Q* @4 v: V& c4 K" }' i - new Vue({
: t1 x3 `: J C5 G - el: '#app',% Q6 s6 T, c5 J' U0 B
- data:{) [6 E) W6 `9 _1 I) a/ R
- class1: false% a- u6 i) Q: f1 `: k
- }
& A4 Y1 H5 w! o% E: w% ~+ y& n - });; E2 j ^* u* d
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
" G. j( m- J {$ w0 o1 w" n - {{5+5}}<br>) N: s8 |, o- o; z( v& g; ?
- {{ ok ? 'YES' : 'NO' }}<br>- f; m" a' l" E- \& s1 w
- {{ message.split('').reverse().join('') }}
; G0 Z4 b7 b1 k) ?8 ~. F/ s - <div v-bind:id="'list-' + id">菜鸟教程</div>; d- w$ o% w5 F; v
- </div>! j) ~% x. h0 Q& u! {" ^
- ; Y( o- {$ K' s: p& v
- <script>+ a+ U1 @7 X* U r& e
- new Vue({4 a, G \$ E: `- F
- el: '#app',% z* u6 b% o9 [
- data: {
. i4 A* s. z5 F' O1 w - ok: true,
* r2 r+ G8 w4 u( F - message: 'RUNOOB',
+ n4 a' N c4 R: L1 L/ \ - id : 10 `1 N" {& |( c( h5 w& Y
- }
# @2 W: d$ e7 b; J, v - })
/ L0 v$ c: ?8 e+ y c7 `! w2 }& o - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">6 b3 Q. ^* A, S
- <p v-if="seen">现在你看到我了</p>( v0 v7 R! m3 y
- </div>) W! ~8 U/ e1 h/ ]" v' \# O
-
& i6 \1 Z2 u. S0 C. w. C - <script>+ A0 b/ V* q' |! Q* u9 J
- new Vue({2 q) f- [" U) l
- el: '#app',
6 H* P# U! D* Y - data: {- F! _" A: \# u
- seen: true
8 Y j3 M: V' Z8 W' R- R - }
2 S3 X0 \" W5 d% [1 } J - })# d+ g0 |, R6 V g
- </script>
复制代码 $ ]! |. F: \, }3 Z) {1 ^
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
& Z6 B+ G: q8 \" c - <pre><a v-bind:href="url">菜鸟教程</a></pre>
! X- Q$ {& g6 m6 Y8 B - </div>4 _7 Z* K9 ] V" n/ U
- " |1 x- h3 {3 g3 ~7 O3 i
- <script>8 F, l, Q' b4 V0 Y$ i9 @ n& n: S4 k9 }
- new Vue({* u: U& ? F9 \8 ~3 V
- el: '#app',' a1 z$ p: U% y+ R
- data: {! E7 @/ e+ O: b$ o6 o9 M
- url: 'http://www.runoob.com'
0 V b9 G) [/ J( c' \ - }* E0 }! |' P7 V5 \+ R& P# l
- })" ^3 G! i e$ n4 x' y, U& u/ \
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码3 u2 g, K @# }- B! s
- <div id="app">
: f" {; ~; u+ N, H - <pre><a v-bind:href="url">Vue参数</a></pre>
8 Q1 @9 J' u8 O: ` - ' n) x6 X+ e' C) W, W
- </div>
" L) S: Q# M4 ?8 r
$ ?8 J7 q* }+ k4 G$ ?- <div id="app2">) n0 {8 i1 @8 h9 D8 q
- <p v-for="val in arr">
" ^! c( J8 I4 }. Q7 V6 `8 d5 v; |8 h - {{val.a}}
1 C8 m; w$ K7 q - </p>
: \" Z: v# g: B9 E" r - <a v-on:click="tap">点我</a>
5 Y: z6 Q7 h4 ]7 d9 ]8 N, R - </div># g; ?- {0 H. s6 J
1 V$ p7 b1 t9 B' z( M- 4 c/ k* e! F$ {+ c7 @$ E0 z
- <script>5 W+ @4 I0 v! I, v$ V* B
- new Vue({& C; @- @: j; S* D# N9 l
- el: '#app',
. {* j# R7 r) o4 x6 w4 Q6 R - data: {8 Q: t6 }/ A' A B& f7 j% q! T5 B/ X
- url: 'http://www.cncml.com'
6 e- P! Z! d: n8 _. W - }+ c8 p7 A6 y+ N- Q# Y
- })
, I* e% W; F3 u+ q# j: K) Z. Y - new Vue({" |3 q7 n. C0 Y/ v# @( |" S3 j
- el: '#app2',
% ]9 b7 l3 X7 \- z3 a, z/ i - data: {
" l8 L1 c2 c. l, R/ r - arr:[5 I8 s! h( ~- O$ F
- {a:'bb'},
4 S: U# Q: G: L! Y- S$ X' O# g - {a:'cc'}( X/ X$ l2 t: ^: N8 u- C. N8 A
- ]/ l" J, }; v8 ~/ n( E
- },
) j* p/ V( `" E. t) _# B) a; @( ] - methods:{
( C0 }3 H( F6 y, J! B7 ` - tap : function(){) h4 u3 T7 e& P& H
- this.arr.unshift({a:'new'})1 B. b& Y M T: L5 m' {7 X9 f
- }
- M" O# w: y& U) v5 p* s! C - }& b( M2 t, H% n6 f. }
- })
& p" Q) B6 B, ~- j$ b+ w% R Q/ x4 b - </script>
复制代码
3 a' D3 k1 Q5 k7 _1 w, @2 e! s/ X, X. y# P% y9 n$ f
在这里参数是监听的事件名。
* h& E2 N& u! B- I% l |