|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
, W. O* Y& C8 x# l$ ~/ M: ] - <p>{{ message }}</p> G. S+ [5 h' e/ z6 U% y8 c
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">4 e/ ~ x' E2 h1 j1 v8 T& l. Z, W5 S
- <div v-html="message"></div>
2 E% M7 f/ R' F6 K9 K3 v* t+ ? - </div>4 w4 ^; M: p: n$ j( p0 k2 i
- . D. j9 n6 e4 j' y
- <script>0 S/ C4 E1 X5 t* W3 V) F
- new Vue({
X+ V8 I* O4 c' }2 C& G4 J' F - el: '#app',
8 {1 ~2 |7 p; J( x7 _- u# C - data: {) P7 s! _8 T) s
- message: '<h1>菜鸟教程</h1>'
@6 o* |$ K- m8 A/ i; B/ c5 k - }; }# N" h; b; p* z1 |/ K: }3 m
- })
6 F0 r' B4 x8 y9 q - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app"> G4 E; h3 D& F. X7 p- h8 ?: z
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">7 `& Y) W7 G6 g* d, s
- <br><br>
9 E3 a8 T% U# A# d - <div v-bind:class="{'class1': class1}">, p0 r& m8 v3 d0 G
- directiva v-bind:class
+ ?4 x+ Y; I* s+ w' s# x+ d3 O/ w - </div>4 h* x' L, s ?6 z; M7 {
- </div>
7 j! u6 p. ]* }. L3 p7 E. K9 l - $ p `/ b3 y0 s/ B3 {7 J/ w. _$ c4 t, I
- <script>
$ {. W4 W4 N& y+ E* P: L+ t4 Q - new Vue({3 {1 Y8 u; f; j# r! j; J9 Q
- el: '#app',
4 Y, b5 l8 g/ B! |7 c: t - data:{
. W: ?, }7 ^" [ - class1: false3 H6 K3 z5 [4 B; A/ |, A2 W
- }; G8 u; |! | f( v% W& C8 z
- });
1 `% ?0 ~7 }# {5 H7 y% V - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
1 F3 `7 d1 e- o5 f& b - {{5+5}}<br>
" a w9 i4 |+ J t) c- a+ l e - {{ ok ? 'YES' : 'NO' }}<br>: z0 R. Q$ {0 x* q- p! u
- {{ message.split('').reverse().join('') }}
6 j( g1 e3 M# W$ P' X - <div v-bind:id="'list-' + id">菜鸟教程</div>
) F+ G6 B6 V1 { - </div>% z- i: n2 C+ S6 e' G% D( @
- # ?3 a0 o y( c$ M
- <script>, J8 z! w/ |$ ]" p- G6 |% ]
- new Vue({
/ H& `* ?/ a& m4 y - el: '#app',
+ o$ i- x& D2 r" F4 l+ p8 B - data: {) q1 y N- Q9 V% \6 h% P- y
- ok: true,' g4 B& N& Z* e
- message: 'RUNOOB',
$ M- ^. k6 I: L! u+ y5 R/ S% o - id : 1
" \5 F/ O; m5 {9 X+ F - }
8 t/ b% ?4 j3 e# }& w+ v$ V - })
! m! q O" a; Z2 w* t+ Q3 M, }0 E% A, c - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
+ s0 W/ a4 j. I: s) v - <p v-if="seen">现在你看到我了</p>8 y' O) u! u) `6 E- T y; v
- </div>
' m; d, p" g& k7 h k -
3 L$ Q% d' g# ?4 w1 A - <script>
* m9 U' n( a2 s& o - new Vue({
# F! r! }0 u+ y0 r# R9 r' f$ a - el: '#app',
) x; S I2 S. f+ w4 P2 E - data: {* z) V" W& [ w; O& j4 q$ d1 k1 T4 S0 z
- seen: true2 J5 P c. U: z: t
- }. G5 U' L) b% x1 f! g+ m
- })2 x& K( ~" q% E
- </script>
复制代码
" X5 @1 { N5 L# N! v& I h( t这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">4 M$ | \2 ?7 V
- <pre><a v-bind:href="url">菜鸟教程</a></pre>3 k1 ^3 n' _5 e( y3 h1 V
- </div>) \% Q; O1 A+ R+ J
- 5 W! ?. d K% t6 @; f5 L0 E
- <script>: p' d) z2 w$ i2 o) h( Z
- new Vue({8 B1 y. m5 }( `5 U
- el: '#app',
3 S* M8 _# i! y$ O6 e5 | - data: {" ?$ \7 H4 O: }; y
- url: 'http://www.runoob.com'
* F- a. | z2 d! \( B9 d# e. L - }
3 O" K8 v7 E$ {& b: { o - }): B3 T$ J* v0 ^, [5 ` t
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码/ G6 y. N$ Y; M5 s, S4 O [5 y
- <div id="app">
) S+ l. P1 W9 h9 `' j6 B: @0 [ - <pre><a v-bind:href="url">Vue参数</a></pre>$ E, Z! q5 N% I3 C+ R1 ?! A
7 T9 c2 I# s6 Y- </div>
! H& X5 m/ ]* a8 e* Z - ; m h1 t; \: x, N6 N9 \1 n1 a1 Z
- <div id="app2">9 q2 S; d. M6 C7 h6 a
- <p v-for="val in arr">' x% ~/ l- ^! E+ p3 W0 P
- {{val.a}}3 K& Z) K( Q1 U7 U
- </p>2 H: |3 w: z0 _8 V+ X
- <a v-on:click="tap">点我</a>
, s4 T4 G6 A/ n9 U/ d" J - </div>
' Z2 H. |0 T, P/ ^2 s4 y8 d) L - & O' x$ k0 Z' a0 T i8 L! D& V
- 9 c0 V" l9 A" L2 d2 G5 J
- <script>, ~' v: ?7 H& I" u$ F/ x" F
- new Vue({
+ g; N( ]% g2 k5 C - el: '#app',: ^) {+ I, C/ p, r+ J$ ?; S2 M
- data: {
1 i3 I8 |4 `! A4 n - url: 'http://www.cncml.com' q4 f$ a8 R: F8 E
- }
" A f% L, S- v0 i s" n - })
W6 m/ B! E. L0 l" {+ V - new Vue({
5 X/ w0 R b+ C! q7 {8 h R0 P. r - el: '#app2',
9 m& \; |$ K. c: K! h" A8 q! v - data: {
3 r$ J+ W& v. ~5 X% |9 M - arr:[% g3 A7 Y9 T* ?- j
- {a:'bb'},
' @/ Q" _7 P4 z3 }7 j+ h! ~ - {a:'cc'} u3 P! D* `5 w3 \8 M: n
- ] U& i. d8 t6 I
- },
1 [8 i _1 z8 Y$ b% J - methods:{
# `9 h5 t' w. l& @& A% G - tap : function(){
8 |! b0 v0 Q: \2 B# | - this.arr.unshift({a:'new'})
: d8 ]# b0 v7 b, ?4 T, z6 k - }- w) d% z7 G7 z
- }! Z# U M# U" ?( R3 ` V
- })
- W8 W- J! `# J( s6 o - </script>
复制代码
) d: i8 h/ `8 G" D* }6 @
+ c* W! y% @& |
在这里参数是监听的事件名。
0 x6 w% _: z* r+ b) E9 P" I6 T0 N) O |