|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
: j) s4 `# |6 x' p& L/ I* [ - <p>{{ message }}</p>, ^. T2 B6 H6 U7 P
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">8 W6 E$ S: m! g3 X! P9 h
- <div v-html="message"></div>8 X6 R* k- v; q+ z
- </div>7 H7 P7 n; L6 A$ i; m5 U0 W* M
-
6 X- ^, b9 x. \* Z' C$ E - <script>
. V$ _+ `8 f5 y& c4 n7 B - new Vue({4 p, R& c0 a P2 r- K
- el: '#app',! q1 E# R! i" K; f$ R8 H( [
- data: {$ N7 R* {$ ^" F+ k' ~" f- j
- message: '<h1>菜鸟教程</h1>'
# v! M3 w) G4 e+ z( N - }
, b' V/ E/ A, i - })
& r7 R# O4 i* E4 |8 _ ]" C" r - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
- x8 ?- L* {: A9 B - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
$ }) A4 K- @' m; {2 c - <br><br>
$ I4 z @: ^, g; ] - <div v-bind:class="{'class1': class1}">
8 Y- J$ p9 N0 @ - directiva v-bind:class; j! W" Q8 V. E
- </div>
/ ?$ M4 ]! T5 J( k7 v5 @) n - </div>
) K+ q; O; V+ k - " `# b: A" F( {0 F, O. |
- <script>& K8 R+ A, _4 c& G, v9 r9 r9 z6 b: D
- new Vue({$ p8 X3 g( x+ y: T
- el: '#app',3 c5 c, c8 k5 D% O; b, {& i. y0 \
- data:{
5 S# I: S8 [* \; U3 Y, x8 g1 ^ - class1: false
) H: T* t% v: O1 ^; K$ N" L% V6 C - }
4 k" B- F: s$ b+ `- O - });
; o2 c' E. n" I! Y M - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
8 y* k5 _) m9 U - {{5+5}}<br>$ ]% T& W1 P( N9 d
- {{ ok ? 'YES' : 'NO' }}<br>' m1 ~( I7 L9 {/ B/ D' y* [3 o+ G
- {{ message.split('').reverse().join('') }}
$ ]) S5 q( N% f) K5 b$ H+ u - <div v-bind:id="'list-' + id">菜鸟教程</div>' H. @+ [. w- N1 u0 F
- </div>0 t3 X& S4 ^9 d; R. a6 E. ~
-
2 g' g- o& w0 P- z7 ` V4 k - <script>
2 ]+ i' C3 R9 _- }; o - new Vue({
) q* C5 l2 Q- e! g - el: '#app',. A, H9 {& _' p) l( E2 J. A9 q: i4 ^
- data: {
& V) ?$ v8 X/ w - ok: true,
: \4 r7 Y: b! } - message: 'RUNOOB',
7 M3 |; S: q6 B( p, t1 Q9 T* O - id : 19 U& |: U, N/ A" I
- }
v1 j- M7 \3 C5 F - })7 L( I5 y i' d
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
7 a8 j6 d/ }0 E1 Z. h - <p v-if="seen">现在你看到我了</p>$ m" ]) ]2 q3 B5 u
- </div>
" F. K- M& p! j2 R' C/ X& L) [' b - ' t% B7 ^, c8 X" M& `5 E
- <script>
( h3 n( x$ e4 e3 O& Y - new Vue({
5 P& c6 j7 z9 c7 ^# | - el: '#app',
- g+ F' I4 O R: e) n3 [7 Q - data: {
" K/ W7 e8 F" V) n - seen: true1 t% C5 k$ e0 C
- }9 K, z; d1 q! z* o
- }), s+ ?3 l; |0 I
- </script>
复制代码
. n a8 |( X. ?# b6 q6 K这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
9 |: I1 H" Y) r Z - <pre><a v-bind:href="url">菜鸟教程</a></pre>+ H5 L: {1 q* J, N% Y& L8 m
- </div>
! _8 B. f* j# p" {; d2 W" H - . ?$ u# c6 Q! l% p$ ?% ~
- <script>
9 h6 C2 l% V" Q, x - new Vue({# a) i2 v/ |; k0 ~& C
- el: '#app',
6 Q" c. p9 I' V* F) R - data: {
6 J3 v( o( B- k+ D+ f& m - url: 'http://www.runoob.com'& j7 [8 F0 ]: j/ f3 F3 b' y4 p7 G
- }
0 I# x# `& x) K - })
! h0 w. R5 h7 E& g$ D - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
2 S$ p$ w, Z3 n1 i+ j% K* K
- <div id="app">
& V5 J4 @) v* X1 }6 h4 ]; `4 U; _ - <pre><a v-bind:href="url">Vue参数</a></pre>
* T; z+ P2 C. A2 L( v/ a, j$ r - & \4 A- `9 y& W0 p/ {
- </div>
/ n+ Z' L$ E7 a1 P. F$ _% q/ R
C7 M ]6 V: A, h; `; q+ Y) `- <div id="app2">3 F$ `) Y* ^! X+ M. K6 m) c
- <p v-for="val in arr">/ P" W& F1 i- J; ~5 X1 T7 S
- {{val.a}}! ?( d2 C6 n( t2 q
- </p>5 J! ?+ k6 D3 W7 t5 e% x* z5 f2 }3 Q
- <a v-on:click="tap">点我</a>+ e: t9 j" G! P3 s
- </div>) ]4 f0 I4 [7 r- }: J4 a
# D/ j) G. }& T4 w9 T) I
5 u9 L/ X+ X' H! s- <script>2 K" x( p' p6 Z& M
- new Vue({
$ l- {5 @7 v& V: u& I7 o$ R - el: '#app',
7 b% O$ |2 j8 z. Y& F# @ - data: {3 R& \% t9 [& l" s3 Y& |: m/ ?
- url: 'http://www.cncml.com') }, \) U# R, a' S; E+ @
- }0 q9 G) O3 ^; @8 p$ F5 E
- })
# g' q3 F1 W$ }5 p ~4 u" p4 `1 f - new Vue({) g" ]2 Z# A* P& W4 R/ u* L
- el: '#app2',- g( a" e& a9 n
- data: {
. X) t* b' I8 U. q/ h/ Z, K \ - arr:[
' m& w6 j1 o/ P6 J. a3 X - {a:'bb'},
0 `% H/ f P' u, y5 U, ? - {a:'cc'}
5 p5 i x, v2 B% C - ]
" Y1 S, z- F# v% J6 n: Z+ f: U( Y - },; v* U; `; c/ u+ j. b- D: M
- methods:{ h% X% u* ?. P7 a4 N; b
- tap : function(){ b3 a6 q* Y0 ~$ j
- this.arr.unshift({a:'new'})
' p0 H ~, y: ^7 R - }* |: }0 i. @4 B* `8 l: F" [
- }; N1 l' _" c, B% c2 }
- })- R: O6 S* w: K4 x p: v& A
- </script>
复制代码 ) F/ u$ A5 P j
9 |6 {4 l/ ^7 Y" r
在这里参数是监听的事件名。
8 X3 t: }( h& N( A1 r: i |