|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">' p2 f3 g$ b6 n- y
- <p>{{ message }}</p>
L1 {0 L- ?; o! R - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">2 m5 v9 U2 j7 P4 M2 `* L8 `
- <div v-html="message"></div>
: k8 h% c, d$ s - </div>
% d% r6 X3 t% g: J) t/ H& n8 E - 6 I' |# m5 ~- k- m& Y6 ?8 l% Z
- <script>8 P! Y8 L! k8 ?7 \* X& n- m
- new Vue({4 I# ]0 K! j# |# K7 O5 v! x( \* U: i
- el: '#app',- l i. u: t/ [2 H. r/ w7 w
- data: {. r7 d" M' n$ i: }, ]
- message: '<h1>菜鸟教程</h1>'
) D' N/ D6 h! n/ J# k8 d5 q - }% m* M# c+ a6 P
- })
) }7 [2 I8 u# @- n0 G4 W3 l9 \ - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">0 O) R, o& W. P4 n3 J1 N ]
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
6 _! D; f2 p" Y0 K: T0 s - <br><br>
7 m8 G; b4 O+ c5 h2 G4 L2 { - <div v-bind:class="{'class1': class1}">
$ Z5 ]" I) g+ S' t - directiva v-bind:class' c9 _4 o* d3 m8 \1 T+ c
- </div>( `+ w8 Z- E2 z( ]# D& B1 y6 y3 g
- </div>
( _1 B3 C( t9 a% r$ R' O/ K -
( _( \+ ?6 q0 @5 ]% t% ] - <script>2 k3 j0 H! h' n, K6 |$ M" z
- new Vue({+ j5 s+ H+ m/ \' p% ]# l
- el: '#app',
: z8 @, [( u8 t, K; C) a - data:{
- z1 u8 B5 t1 V - class1: false
2 u% R! y( I. N6 h - }8 J" F* W- D6 e8 G# l: n _7 }
- });
) v7 t* N8 ]( x. a* |1 ?% O - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
" p2 S2 {( A# ^0 G) R% T - {{5+5}}<br>
6 b2 @! }+ ^1 ?) c( {3 b. s - {{ ok ? 'YES' : 'NO' }}<br>7 f+ H8 {% ^3 r3 L4 v* a; Z3 ?
- {{ message.split('').reverse().join('') }}
& B; `. \2 C. M' Q8 i0 Q7 z$ y n - <div v-bind:id="'list-' + id">菜鸟教程</div>
7 `. Z q; [" F - </div>* \# B) r9 W. Z* d8 c
- ~; n# @9 z1 Y- C3 A' v# F- s) ^
- <script>
+ `" s1 o% W ]7 z( d% U - new Vue({
9 _, E4 ~: ~/ F+ r - el: '#app',
3 x2 {8 e7 T @' l3 G; z' R- G$ ~: C - data: {
7 [+ ~& H% |/ t5 G/ [ - ok: true,$ m2 j+ {% l1 Q
- message: 'RUNOOB',% [3 \9 [4 R* ^; t, M; y) B6 t
- id : 1: p8 A/ `3 o0 f' L& D! v
- }! a2 a$ U4 Z: c6 t$ n" X$ l4 ~
- }); `) R Z* B9 k# n
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">$ s" f& Y; ^0 D" F5 A
- <p v-if="seen">现在你看到我了</p>4 L4 D6 c3 F8 F; X
- </div>
# i" M4 s& o! Q( Q; o - - D7 [9 w, x( @7 q
- <script>4 @2 n1 I7 {& ]5 {# s- q
- new Vue({. s& g4 h; K. C
- el: '#app',6 v1 A6 s7 K$ H3 K
- data: {
- t0 O* ^* e# |9 [2 Y& x2 ]+ L& ] - seen: true1 f Q: k* s1 {* B/ D- w: H* I
- }9 T1 c; h& B9 H$ U4 d
- })
: {. J( m9 m7 F0 a( A - </script>
复制代码
8 m1 J8 W% W7 n. [% Y* q& n5 V这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">( ^ D( Q6 t3 ?; U7 c: o7 [ `
- <pre><a v-bind:href="url">菜鸟教程</a></pre>
' _& C1 P) B4 E, K" @. I - </div>7 H/ c6 g. {" r( c9 r i
-
% {$ l/ f' l9 _( s% }' `2 D - <script>
: i! D( n2 ^7 F/ s3 W - new Vue({; ^9 K7 k% U( W2 x
- el: '#app',- ^' @, ^$ m( W: Z! N# |* c }
- data: {
% X* @0 v1 a4 b- R: ? - url: 'http://www.runoob.com'
! D& C' u6 y- p( M& Y - }- P% y- g( ~8 D7 H0 J+ N& K! S# |6 E
- }) r. J0 t( Y* ~! `) O) E9 ?' I. C
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码7 R; E1 v- O# p5 {
- <div id="app"># i) X' y$ C# v# H" M
- <pre><a v-bind:href="url">Vue参数</a></pre>7 l0 o2 K+ L) o5 b! x
- 3 f1 C5 o$ `2 I* q7 z! E
- </div>/ v a1 k1 f# X7 E# B% W6 ~
- ; N( B: c! n2 q4 D/ ?. R+ {3 q1 P9 r, h
- <div id="app2">9 I* g8 {! J8 c
- <p v-for="val in arr">( m! W" ^4 ~5 R' `# t
- {{val.a}}
: ?1 `% ^* D: q& D- \; Q4 V! _ - </p>
# Q4 v3 S" e- D; [ - <a v-on:click="tap">点我</a>
5 }+ u% f- |. d0 h4 Y- H3 q - </div>& e. h! O( O! {1 x, c- }! h( {
$ I/ K( }) A; X- 0 t- Q7 R2 T2 P) J2 e0 T$ F! J
- <script>
; S- b7 U! k6 f5 ]1 h. W8 y: |8 O" g - new Vue({' D- g' I- z ]: I" Y
- el: '#app',! X3 E( w$ J/ o2 ?/ i; m
- data: { y8 M1 ?% B1 X
- url: 'http://www.cncml.com'
: l' b' J2 F. w/ t. F: L. [ - }6 T! ]% J4 o Z+ K7 k
- })* @* I' P& B) z
- new Vue({- T: C& p2 [2 O4 V: U5 _
- el: '#app2',9 j* B# S, l( S# y
- data: {+ q* N- e2 r$ J8 z+ T
- arr:[0 g9 G( ^% S0 Z) @
- {a:'bb'},: H: p8 s: b0 y. w& T& a X, p( B
- {a:'cc'}1 {; q# ]+ u2 ]5 @/ Y' H0 d- N, E7 x
- ], e- K) }" X' D+ ]- H
- },6 m6 O: M* }" I! K
- methods:{
+ D% }$ Z$ b8 j s: ]: ` - tap : function(){+ Q/ {7 ?( [: m; P/ j5 c: b Z
- this.arr.unshift({a:'new'})
8 l" v5 s" t5 u" ~. l, n8 Q. ? - }1 \3 o+ E( e* n3 v6 P; |6 [
- }4 D# b2 I8 d8 {) h2 a) a
- })5 `, X: a- O7 g. f8 x6 J
- </script>
复制代码 ! M B% b9 g! j
5 i+ `' v M3 W1 m" P* q2 M; v
在这里参数是监听的事件名。
7 e' c5 r: |6 P4 F' k. p& Z |