|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">8 I" X# y* P4 x' ~& u/ r' d; z. D
- <p>{{ message }}</p>0 J; f0 d e& V. V5 k/ v% J
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
) l7 P0 T7 Y& f) [$ \ - <div v-html="message"></div>9 I5 g: S+ S- e1 g! T
- </div>) i1 I; m7 D3 V, R- r
- 0 q$ t& n5 A j' V: K3 R* z5 D3 Z
- <script>
- N- N8 i4 B5 Y2 U% T0 [/ ] - new Vue({9 _9 [, h/ m) e: B- N( @/ K1 P
- el: '#app',$ g9 `4 `% j1 D9 w
- data: {% }& N8 J( N( @7 u6 T/ q/ m
- message: '<h1>菜鸟教程</h1>'
+ U) T' D2 g- F1 [, o6 h - }
" z' G6 T# P2 i* p3 Y - })) @3 x8 Q8 [) H, [' x3 ~8 J/ ^6 ]- J' W
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
, G- V1 i* H+ D S - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">% f5 d( f: H% z" h; W
- <br><br>
7 U* Z; S5 N7 l- u( h - <div v-bind:class="{'class1': class1}">
5 P; M3 R1 D2 U4 n7 ] - directiva v-bind:class: G5 d2 r% L2 L# d9 A3 C2 D% o/ b
- </div>2 [* c- K! S% b
- </div>
2 f$ M( X/ o1 F! z$ E -
$ ^+ [( I- y5 ^$ o K+ F( n( o4 j - <script>/ Y- W: W/ v4 e8 u' K4 _4 D' y8 W
- new Vue({; U6 w7 i8 H! \/ v C! j
- el: '#app',' V8 }9 @% x1 X3 U* K' }
- data:{8 T+ H1 z3 @9 R/ P7 t6 T) N6 M! L; F
- class1: false
8 ], F. @7 [0 k: M5 J - }( s( |# D7 ^8 c" N5 t
- });5 n [9 p& O" _# \) e
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
7 R3 ~" f& a/ n - {{5+5}}<br>1 T' E' Y3 B: h
- {{ ok ? 'YES' : 'NO' }}<br>
4 M6 A! a _4 Q, O% Y - {{ message.split('').reverse().join('') }}
% z3 |. V/ ~% q% q - <div v-bind:id="'list-' + id">菜鸟教程</div>9 m9 `7 N' B/ F4 _, L# c
- </div>
6 J$ ]& T4 N& ^/ n - ! b( H1 s7 Y5 q' `9 L
- <script>, w5 l$ D" u$ ^4 r( `2 G
- new Vue({3 N0 w/ C+ |7 m/ G) G
- el: '#app',& V) w, n3 ^/ h7 ^) V6 \4 T4 v
- data: {
! ]7 ^, B1 n/ C# I - ok: true,/ p' W( M0 C7 W- G- t
- message: 'RUNOOB',1 S1 H0 @8 n, }; p3 p. ?- _
- id : 17 I. X f4 |; D
- }1 n6 }1 f$ M6 r6 q1 D
- })
* x5 S- A4 j9 O9 X - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
5 {. @0 ^2 |7 {: r/ i% W - <p v-if="seen">现在你看到我了</p>
$ `: V- q9 W5 B9 v1 j/ r4 e; } - </div>7 [! N: }; g* [( T
-
$ a+ P$ Z% j8 a, ?" y/ V# M `( A - <script>
# X, s# n8 }1 h' ?8 `( @8 l! s - new Vue({7 n1 L& X; J& b- t( r) Y( L" ]
- el: '#app',8 J$ e' r! r! \3 R/ r, w- B- ?
- data: {
7 _; G R3 ?/ ~$ Y9 i8 J - seen: true
6 |, D. X0 S" v; N) t, \9 p, W3 P - }" Z" V2 m, j5 E' [+ I& T
- })
, `# ~' l4 D% L& C- ]: I2 X8 H - </script>
复制代码 0 }% p+ v5 U: F' ^( z0 ^
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">. A2 n0 a! Y- y8 T' m
- <pre><a v-bind:href="url">菜鸟教程</a></pre>0 d% i; v& r/ X9 \4 a. l" |6 `
- </div>
+ H( Z" a; C( a6 U9 z -
0 q: @( ]9 N) H8 Y k. T8 J - <script> `1 {, r4 Q9 ^: g0 U/ n* i
- new Vue({1 n0 x; Q) N R+ Y: F4 F2 }: l
- el: '#app',
% n4 o7 B8 ~( j! p; j2 k - data: {
$ x! O" D# @7 D. {9 Y$ M7 n - url: 'http://www.runoob.com'
: h4 C- f8 J, Z; u* B$ j) @& P - }1 S5 q* p5 y% q' J
- })
" `% F) X+ S- m# C- Z - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
. S7 p: m, T8 K+ i& r! B
- <div id="app">* ]: t6 z4 f5 |4 r$ o. p# L
- <pre><a v-bind:href="url">Vue参数</a></pre>
' S. ]; A/ _$ C3 c, y- \, g - , |0 S! s$ a8 @5 O5 d
- </div>
2 v6 e! f* Q% d6 w; _, B - ) O2 V1 _, r6 b f: e
- <div id="app2">! T7 @( }, j+ q# }' x
- <p v-for="val in arr">* L6 e0 a* b: x7 H# R% ]
- {{val.a}}: d7 U1 B& A0 D9 N3 h
- </p>- v: z2 x" b! b9 X7 H
- <a v-on:click="tap">点我</a>
. P# J5 X5 | _- K% [ - </div>
6 x6 s3 H8 ?5 L. o - , `* ~2 T+ [: v) x& g* g
- - u% d$ c" Y9 X( X$ l
- <script>3 Q9 K0 E2 y9 U3 J
- new Vue({
# x8 x* N! T! u. l8 d - el: '#app',& D. P7 g$ @, I7 M# j& C7 A% \
- data: {" x, a$ \- |3 M3 e
- url: 'http://www.cncml.com'
3 }( ?( S8 P( d* H; i$ R u - }& s' e! t0 F9 I. M
- })% _7 E: m$ p# L p
- new Vue({. \) s" X1 E0 E( v3 J8 A L
- el: '#app2',- d$ I) E$ u6 q4 s
- data: {
9 L) t- S8 K9 x# c5 _# s; G - arr:[ n! s- O" n9 i/ h% h: L$ ^) Y
- {a:'bb'},! e$ ~, H7 m3 r, O& q8 [
- {a:'cc'}5 f7 ^& f2 I- s! h, t' q
- ]; @( D& j* u& Z h4 T0 B2 P' z
- },: D/ {$ x" Y4 I3 ~! h: g
- methods:{$ ~* P" @9 _! \' w
- tap : function(){
% d& y; q7 \" w+ k% j - this.arr.unshift({a:'new'})
8 F3 x4 L- w1 [: B* e+ ^$ H - }% I9 ^& `) ^ f, M. e1 Z- o8 o3 N
- }
( c# l+ e3 |7 P- W - })" j2 I) l2 V* y3 C: ^- ]" q
- </script>
复制代码 ' [5 [" c+ e" w. X$ k9 a; g
0 T- a' T; n' `
在这里参数是监听的事件名。
7 C4 y$ _0 ]; r; m I5 |7 D- \$ W$ y |