|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
" n- N% W {& J, E - <p>{{ message }}</p>
. \ T- I) t" K( v0 T0 t - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">! M- q! l' M' v9 X
- <div v-html="message"></div>0 B9 n- |+ _7 q n) l9 v4 ~
- </div>
3 F2 d; e& |3 }5 Z# x - * D A* _4 N, }
- <script> z( V+ k# F0 s: E$ o( v% }3 e* O
- new Vue({; f( Z9 L M0 b, X1 e" w
- el: '#app',+ L2 Q n. _: [: p3 e# c
- data: {
- c$ a& B& R" ? - message: '<h1>菜鸟教程</h1>'5 d4 P" ]% m! n/ Q- p0 M
- }
Q, N- H; w- Q" `+ y* Q - }): P# } t8 e; e6 X! }
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">8 b3 w! X# P/ s# C: L( P6 m
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">/ z X% {! M5 d! `+ ^
- <br><br>$ M, `1 g7 t- D) b- M; U
- <div v-bind:class="{'class1': class1}">/ d6 T+ L& K: w4 p7 N: i; O1 [9 R, X
- directiva v-bind:class5 n# G7 x" j" u& k& d4 S$ v
- </div>
4 y: a' t% O5 n2 W% X - </div>
& W7 n9 u% D) p1 w - G, W V+ ?" r* t
- <script># z- ], J8 r! Z% Y; ?1 T6 w
- new Vue({+ e6 R2 ]5 N/ ^' _2 T
- el: '#app',
/ i3 F+ K. k* e. f6 F - data:{3 L1 W4 w& m* Y. c9 A, c! G+ t; a& S
- class1: false% u/ k' B# Z# w
- }
; B8 p' ?! V: i1 }! ? - });
7 |' f6 S# N; k. u/ t% ], B t! g - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
- P/ I" G7 B- p, t) _ - {{5+5}}<br>( e7 A( b% O. H" W# m: F
- {{ ok ? 'YES' : 'NO' }}<br>% D$ R4 }7 p$ X
- {{ message.split('').reverse().join('') }}( X% H8 z; `$ F7 Q
- <div v-bind:id="'list-' + id">菜鸟教程</div> p5 y t& q( |' x. r( H
- </div>
: Z0 j6 A4 l* R: ` T -
3 f; O9 I) B; V: w# P3 O1 B, }3 f - <script>
6 O0 w6 v1 B) | R2 I( s - new Vue({
) A) t. C8 ~& Y - el: '#app',
2 @& u6 p# Y- s' U, w# Q - data: {
0 p' t7 C5 X, q4 [8 D! F - ok: true,
. c. `0 t! j2 r' w& T - message: 'RUNOOB',$ h( m* f* d1 q5 Z5 d
- id : 19 Y H2 O& i# f9 U
- }: v# l( ^8 I4 M2 ~
- })4 `9 s6 e' |# E8 Y: K! R( u
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">2 r( o. n' F- o$ |: K) R! P/ I
- <p v-if="seen">现在你看到我了</p>$ Y% I9 N) H8 c9 ]
- </div># C$ }2 O$ c. w! P- B
-
* _6 U8 v1 b( X5 Y' \5 y - <script>7 _2 y0 m9 X* @+ Q1 P& I; `' H
- new Vue({; k, n- F1 U+ w. R# @
- el: '#app',
8 O: l- h: f+ r+ `# P* \ - data: {% Q: W6 H+ r! }8 ~8 L. z& ~' k7 P
- seen: true7 F7 n1 Y a0 R3 U; |, M7 ^' c
- }
3 L7 Y8 ]1 q& k0 u+ z2 J' F& `, l - })
3 ^1 \) g4 t3 U) U9 P - </script>
复制代码 ; e i2 q/ y& j, z0 f& X5 b
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
: H5 X& Q% j& f3 s - <pre><a v-bind:href="url">菜鸟教程</a></pre># W! c0 | R# r
- </div>- e8 W, v; i- K. a! o4 Q1 g* `
- 5 H2 f7 D+ S9 R% |+ m9 R6 g
- <script>
0 |) }3 L) F4 F5 p! ` - new Vue({
' x2 k q" C# q \; ~# { i - el: '#app',- H+ v# B# _7 u4 g$ }- k- P
- data: {* a" p8 C/ G0 |% o" U6 i6 ^; p
- url: 'http://www.runoob.com'
9 |- Z/ G$ U* J4 w8 Y% Z! S - }' I4 e+ M/ t" E `8 f+ e
- })
5 Q+ C7 v# Y9 G - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
6 D. E4 H9 d# [. M5 a, _. e
- <div id="app"># \5 a' \( ]- o) X# }
- <pre><a v-bind:href="url">Vue参数</a></pre>
6 h! b& Z9 N& J- T$ m1 J - ! l- v7 a r+ a9 ?( n% n( `
- </div>
, j- |3 C4 [& Y0 b - 9 P; S; M1 k; e* g
- <div id="app2">
2 \5 } F/ y- M - <p v-for="val in arr">
6 K( Q; k9 A3 `0 k" D# k+ ]* C - {{val.a}}3 z/ Z/ \$ b& _7 H2 o: A5 T* x+ @
- </p>
+ l6 F( S1 w- X2 T# C5 Z - <a v-on:click="tap">点我</a>
9 v* j: _! x, r8 t3 l& a% Q - </div>: Z, w6 W' O0 Q% k+ i- j+ m
- : c7 Y" n& c2 Q( [
- 3 @0 L* F6 L: i+ M
- <script>+ B2 q% j: f! B; s3 S; ~
- new Vue({2 t6 f; O' D9 W" Y: S
- el: '#app',
" N7 ^ N( B7 W( V0 |; U" |+ o - data: {
- W2 i$ A6 n1 p0 E1 S( Y) ` - url: 'http://www.cncml.com'( b" |; c. [/ U' |- v3 E
- }
3 n$ y! J% ]# k" p9 U# P - })
6 u3 _1 M+ i( ~: `3 [ - new Vue({
7 O! C$ j! x8 c# @: K% w - el: '#app2',7 c& s& I( w8 q/ ?' Q* c8 P
- data: {4 ^0 K, W3 T2 [+ P
- arr:[5 {/ g. K% L! V5 g3 {* b
- {a:'bb'},
+ Q/ ~! F' @& G5 S. b - {a:'cc'}: Z3 E2 ?) V8 u3 [7 u! W# p# I2 L
- ]! m5 q4 E- E# v$ S
- },, S1 M" m H8 d+ {
- methods:{( j( f2 V+ Q" t; ~& O* s
- tap : function(){% s7 O$ p \3 G7 {0 t: Z. i
- this.arr.unshift({a:'new'})
( a( \# y# z2 Y9 y. Y - }
- |$ n7 e: e5 u - }
K/ v- ~* c3 Q9 m9 ?* a - }) `" i6 d0 X& k2 o, ?
- </script>
复制代码
1 G7 r. Z8 \: i. y5 A& E: J& _# }7 }! b1 ~# H6 K
在这里参数是监听的事件名。
; l' r3 a; `. O. y7 @1 B* T |