|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
+ {) F& y, e3 h' V8 z( Q5 a4 M - <p>{{ message }}</p>
' J. m% m6 O# i' K# N. @4 b - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">2 n: E) I" t/ i, S0 j& o
- <div v-html="message"></div>! f0 O( K. l: @. R& c
- </div>
5 Z" B: J& N# h. L1 B -
9 q4 o: _# m6 I. T - <script>0 b$ y! L0 k+ H0 }( V" C+ @
- new Vue({8 P8 o/ S7 X, q% Y; L* C
- el: '#app',, _) m# Q& N- @7 g) N9 O
- data: {
1 E- q+ N3 t7 b1 F: c" K9 e - message: '<h1>菜鸟教程</h1>'
# x+ L O' G; d% c- v7 D; q - }
& ?( n# L- b- C* l D; Q3 i - })
D) h9 _ n1 z - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">5 w/ _3 h0 i" ?3 g9 m/ x0 R) Z
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">, }, O9 n( k1 S" r& K: h
- <br><br>
# m0 p3 d5 ^; c K8 j3 U - <div v-bind:class="{'class1': class1}">
/ L" i& U9 K' j' d" k - directiva v-bind:class
5 P" R$ j! Z) _! _% ~ - </div>( A# _6 O3 l" d' ?8 ]3 j
- </div>
/ ~2 K% Y! {0 H/ H -
a+ ~/ B% x& ?" ^6 f# I - <script>
0 I% \" e: m% m" J- V/ f - new Vue({
2 ?. ^: w' Y; w+ R2 b& n' { - el: '#app',1 l+ W1 T8 V. x0 P8 J2 w1 ^
- data:{8 @( n" P }7 V& }6 X% G
- class1: false2 v; g( W; m% z2 p
- }/ [$ N; r$ D1 k
- });
. ]9 k0 e0 Y! S" Z - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
2 k) x5 A5 N% W9 s: ^: G - {{5+5}}<br>6 o2 i1 W, }! T0 g" g; x
- {{ ok ? 'YES' : 'NO' }}<br>
6 V1 @& D9 i( k - {{ message.split('').reverse().join('') }}2 `' S) k0 X( R$ M
- <div v-bind:id="'list-' + id">菜鸟教程</div>
2 S8 { O" T6 S, w# j - </div>& Z7 Q$ K$ h: p
- / a" b0 r9 m7 x, B8 W: L; \) a2 G
- <script>
7 M1 V. O. t! ?. V) { - new Vue({& t2 j* H; K* g# A! p O0 b
- el: '#app',
9 I6 |8 j# i# [* l - data: {- }" N* T& M/ t* t% K
- ok: true,
" ?! I; [" I( e' m3 s: K - message: 'RUNOOB',
8 l0 i& ~7 J) w u( W8 u - id : 1
' j) d8 O) v6 r, j - }
% |* U0 U; ~4 v- @ - })3 N) k7 }2 ?$ B5 @% ^: t) }
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">% |% M! ]# N9 k& f0 u
- <p v-if="seen">现在你看到我了</p>
! Y) Z) X" ]+ K - </div>! E: l5 r! { C" T+ q
-
, Z. d( m" A8 o9 q1 D - <script>9 E3 |. u0 B: o9 p
- new Vue({/ a2 e. f. Z# j
- el: '#app',
( S% s, E' g& \$ n+ ^; x - data: { A1 f0 b5 d. t# x- _- V: |- `
- seen: true
* p; E/ |) g. i: T, m# L4 ]& ? - }% w- v! X: G4 x/ y, c6 W. `
- })9 f/ v. N4 r) s3 l/ u
- </script>
复制代码 9 |/ g9 z @5 E" ]0 G( D
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
7 y( Z# G* k# B% r' Z$ h4 G) M - <pre><a v-bind:href="url">菜鸟教程</a></pre>' z0 M7 s8 k" T; n/ S
- </div>' S- E5 J v* C6 z) r2 _5 q
-
2 x& T; t. q% G9 r8 k3 P - <script># L- H- e. O3 C7 n
- new Vue({# O& ]/ \ O2 j4 I: O* |" j
- el: '#app',
/ \: A. C+ B, r; T5 \# j# z) ` @ - data: {$ {% t2 B. t) }* e
- url: 'http://www.runoob.com'
2 p2 ?$ ?6 f4 h( G V0 p5 d - }! V3 u7 v; z$ R( Y
- })0 z1 c: B1 x( {& O7 W; P* t& n
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码* `; k& L& N# Y
- <div id="app">
5 c0 }# B0 u) ]: G% j$ Q8 L - <pre><a v-bind:href="url">Vue参数</a></pre>: \+ r# g" |- M0 w4 L& X5 L
- & b$ K5 V3 e7 `4 K
- </div>) p( k' ?% m5 `+ y) G; \
- % ^+ ?6 C* D4 x& F: b) f4 k9 n1 F
- <div id="app2">/ } r" ^/ j! K% u. z1 ^4 z
- <p v-for="val in arr">. V+ W. Z- e8 `4 ]' d3 O
- {{val.a}}
! Z5 ]4 q3 S6 p4 A - </p>
2 j( a# L$ F, D2 i, P' e& y* F - <a v-on:click="tap">点我</a>
* k! T& S8 D: \ - </div>
1 L6 _/ S1 i* |! N4 g6 Q; [
* m6 w; S, W- C. i% d# s4 z6 U- , D( Y+ {5 _; f
- <script>
, C+ N+ s. [/ J( M8 G. z - new Vue({7 K1 X3 `: W$ e2 D
- el: '#app',
0 X& Y* t! f5 T. X- U - data: {
/ x5 H1 h, K" U - url: 'http://www.cncml.com'
' \7 |! y9 K+ F4 }+ F# {7 L+ x& b& J - }8 z/ \& e# M# q2 w1 w2 K
- })* N U; u/ v; X/ G/ J) P: z
- new Vue({
0 x+ ]. U3 f! q4 ~7 `; o. ]* J' V - el: '#app2',
3 t9 ]3 H2 c5 r8 p - data: {
) X7 X0 [! d" @6 O0 x. J - arr:[
1 j2 t8 \ K2 F - {a:'bb'},
8 X: C) E% n6 _- r- a4 l* } Y - {a:'cc'}. j3 }* N( v7 {9 h1 f
- ]
1 F1 ^+ U2 E" [5 k" u - },: R% a% J& ~9 o9 N! J8 n* F
- methods:{
& M( A# k" y" R. K$ m3 F9 m - tap : function(){7 X1 ]3 i/ C3 F, i* ^
- this.arr.unshift({a:'new'})
' j, s* n9 r) Z( z7 e' N - }7 a1 }, P: q, ]. U! k
- }
9 C8 W( z% O6 |% F; h6 M- Y - })
7 t5 v6 C# N2 n9 q4 Y - </script>
复制代码
' f# G! A, |4 y+ k! W" G& i2 G- `* f6 ]( g+ q
在这里参数是监听的事件名。 3 `! d5 V+ r5 h, M
|