|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
; f% P' R* y' V) u5 @1 \ - <p>{{ message }}</p>- y) c) e3 o) J
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">- c- x+ h1 W2 s& K# \
- <div v-html="message"></div>
0 `3 U# Q( e& t" Y9 b& f* {5 t" c" ` - </div>
! [0 a6 l6 c- C" f" U -
* |4 ?- t" L W - <script>/ @, ]. k0 |- D( M
- new Vue({
) F' {1 ?5 Y- Z; H7 N' u7 ]: D - el: '#app',0 @1 M" N. ]" ^, a! W( J. L) s
- data: {, Y9 Y' f+ Y4 |1 t
- message: '<h1>菜鸟教程</h1>'4 S" l: y+ {) G7 ~. M. I
- } ~+ v5 E$ I- c, r
- })
+ e& h' a: S F0 ?# W5 V# J - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">; a+ K# n- Q3 W2 N) g) ^
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1"># r$ {) P9 ^ V' }
- <br><br>
3 B: i, a ^ N/ t* ^! c E - <div v-bind:class="{'class1': class1}">
- |! B9 ^, B* }- W! E2 Y - directiva v-bind:class
: g+ r8 W2 B, q: O9 V# e - </div>
; G+ G* v+ J+ R4 }9 p# V3 ]: ]( S - </div>
3 N6 ^5 h/ Y& j% [& H -
4 b3 l, @$ {8 R/ [( N4 R/ K6 S - <script>
6 h" a* e6 x5 C* U - new Vue({
5 a4 [8 K8 v, Q - el: '#app',9 t/ e: z$ ?! w5 v$ u" M( @
- data:{6 {9 O( N9 y8 X6 P9 n
- class1: false5 k+ a& Z1 f8 O* Y0 D
- }$ g8 g1 s( D7 ?. G" X5 {; s+ y/ O
- });
3 j: P( j# k3 X3 v6 H - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
7 g& E' }$ n5 Q" \8 R# f4 y4 y - {{5+5}}<br>" V' I. y* D$ f+ U
- {{ ok ? 'YES' : 'NO' }}<br>6 g4 u8 z" [, `- q6 j
- {{ message.split('').reverse().join('') }}4 N; U- r! d: R h1 A; |
- <div v-bind:id="'list-' + id">菜鸟教程</div>9 ~7 L8 H5 O+ m8 Q. Y
- </div>
1 B+ [1 g" `& D; O! H( q+ r - 6 I4 w/ p, p6 n0 ?; c9 z& h6 [
- <script>3 ?2 M6 t( Q' y } y' h
- new Vue({
' y7 }' M8 N3 Z# t2 G - el: '#app',- t6 k. J" S+ j% v
- data: {% F5 W7 ?2 R% Z. c! M/ t
- ok: true,, F$ Z$ J1 L6 _ B X
- message: 'RUNOOB',* P( K5 I" w2 Q2 Q" I+ H1 }, j0 W
- id : 1
: h3 z- p! k/ U/ N+ w - }2 y9 W6 ]3 ^3 P: O% ]" R1 v6 L
- })
" ]2 R) {$ b4 [+ Y) [4 A - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app"># D) G+ [" ?" O9 R
- <p v-if="seen">现在你看到我了</p>
3 @9 y9 f% R: T8 v% J - </div>
3 B. N# n: {& v - 2 \- V4 l( U; V' `
- <script>& s( i$ P* s8 N4 r4 [* `
- new Vue({! C2 r7 P$ i9 t% ?) V, [ L
- el: '#app',3 u" n: _" v- I y; n
- data: {
' |. @- ^3 _4 B+ ?3 { - seen: true
& s4 Z! E& n) ]+ o9 b* F4 F- m M - }
3 `1 e4 N9 K3 v - })
: u+ Z. }9 U7 T5 r1 G; E: ^! p - </script>
复制代码
) M. v. r4 L: C. V- n: L这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
6 [ j' U3 h2 U2 n9 r - <pre><a v-bind:href="url">菜鸟教程</a></pre>
4 D( ^, I. n& H& K* g( E# k - </div>
2 B2 q; `$ c# o: a" a -
% O# g9 k1 T- u; k3 ?! p8 u! o - <script>
- l" Y5 h( |: T; p9 E, o* ^' y) Q - new Vue({3 _& B! W7 Q7 N
- el: '#app',
& U+ T/ c+ a' _' f" a - data: {
0 k( h% ~/ X( H/ i+ ^' m - url: 'http://www.runoob.com', b% e- \& f8 G% [3 p$ ^/ B
- }
" Q6 {" ^( ~& g7 O e5 M4 F8 f - })
" G, d1 k& |/ h$ Z( a3 R( i - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
+ H4 o: P6 P& `, ?$ N
- <div id="app">( U1 G5 A2 |& z( a6 f8 g
- <pre><a v-bind:href="url">Vue参数</a></pre>+ m; A" z+ T8 P& Z. u* r
- s' O# \+ {/ }. q% \& |- </div># `8 d" u1 O2 G
3 i+ ^1 S- _; H5 h; e- <div id="app2">
, y" e0 X& r4 J& L: N8 \ - <p v-for="val in arr">7 U4 L1 P# Z' a. c+ e0 z
- {{val.a}}
/ T4 k( d5 B0 b - </p>/ {, V& c8 Y1 t) u
- <a v-on:click="tap">点我</a>
# ?) S) `5 |% m/ m( S# r - </div>
/ v5 I9 j, E, O3 | - . o, c$ x h6 }& U# e4 Q6 Q
- & O! `, P; G; v& E& e
- <script>
7 l2 U% a" ?$ a9 _; N$ k - new Vue({1 K7 J+ x* r6 ?! A, i# {# w2 a- |: T
- el: '#app',
% F: q' ^# O) y9 M/ i8 s - data: {
! L0 d6 {2 p- L - url: 'http://www.cncml.com'3 K" q, f6 ?, Q6 I/ q
- }
. k7 D6 W4 ?2 j0 ]4 | @; ^ - })
, o0 @# [# q: C0 w3 p! P2 e - new Vue({
, C' E% O! ^' b" N - el: '#app2',4 G8 y+ m J" P2 I1 h {
- data: {
3 Q: B, v8 h8 m8 Z% O) g - arr:[* m' N& q( f @. ]# i. l
- {a:'bb'},+ t4 g0 A/ H2 n) Q1 a/ L& S
- {a:'cc'}
. x9 m6 I4 ~: ^( W8 a" j/ J - ]
. L! u" i& V5 A4 ]; } - },
c4 O' j ^% M: q1 W# h - methods:{
3 k: L* x; ]5 u1 f4 G - tap : function(){% g* `7 d) F% H3 y4 b# t
- this.arr.unshift({a:'new'})
$ B; ?* W! C2 I! P- |9 ]5 R - }
) h6 \ W ^ c$ { - } G9 x- A0 l( |4 @6 E* E. R4 s- L; S0 j8 |
- })
- q/ }( p$ q5 y" x ], I - </script>
复制代码 $ F" h! k2 V# A0 G& w# E" i
( r3 m" U7 m: ]0 P% i/ q
在这里参数是监听的事件名。
: c/ V4 H5 [% ]* k* j" O0 x |