Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
: } Q# g8 l: O. ^- ^) K - <p>{{ message }}</p>0 W* O5 I O& J% g4 N
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
2 l0 A6 A$ Q: h6 m4 d - <div v-html="message"></div>
# P5 o5 m& T5 D, X$ X, v - </div>
# V+ c6 l3 o" u4 V' o -
( Z& e" c3 O @8 V - <script>
* {. {# C& y" a) C1 F* u/ i+ n. P - new Vue({
& Y7 R( t T' m - el: '#app',; M! O" p7 p, @2 \( a6 b
- data: {' ~) K. C1 ?# Y: e: ?1 ~" h
- message: '<h1>菜鸟教程</h1>'
* b- w: X3 N h - }8 }" b/ ^2 W/ m. i% f8 H
- })
* Z1 O8 l# u7 O) h7 T; d - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">8 M, o5 V) q- A1 I; y5 }! a
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
! a/ Z1 b, n. m" ~& @1 n - <br><br>
6 e3 z% I- F6 E3 Y7 s1 Q9 N' t - <div v-bind:class="{'class1': class1}">5 ?4 B+ X6 L6 n9 ^9 G& @
- directiva v-bind:class
5 ^- l! @0 E9 D, Y$ o+ x' N' v - </div>0 g% X- x/ _8 B/ _7 {
- </div>6 ^# j2 A& K, g' l! p Q
- 7 A" ]; ^$ V; Z, }1 W/ V7 G0 @. H
- <script>9 Z! z5 c5 v* ^2 D$ s6 K
- new Vue({4 \. Z K0 a8 \' f1 p, q2 Z; t
- el: '#app',
* ?+ M3 d3 b, K& Q) {7 c - data:{. z4 q, K' s% W, D
- class1: false
7 t- {- a# i6 D% i0 | - }
4 x/ W) o9 k6 \4 `7 b - });: F2 \; W* |- D& m( L7 i/ I
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">; H3 Q5 b, m4 \0 o
- {{5+5}}<br>& O3 X1 H2 }! \& A( ~( T% \# g7 O5 f
- {{ ok ? 'YES' : 'NO' }}<br>* v$ w& @% ~2 \- X" M) w" w
- {{ message.split('').reverse().join('') }}
p$ Y: l, ^, V0 i$ |- x - <div v-bind:id="'list-' + id">菜鸟教程</div>
4 O$ S3 h% j4 A) t1 P; `# L - </div>
y- @% j" P/ Y% k, m -
7 n- Z3 S$ ]' a1 a - <script>% h- w7 v+ H' [. | G9 {% P
- new Vue({) c. [+ e4 x N
- el: '#app',
3 p) o3 R5 C, t1 f - data: {/ k b3 K3 J3 K/ i2 f
- ok: true,
: v: ^0 d0 a: M( @! S - message: 'RUNOOB',; L E6 _: M* H+ E" M6 g
- id : 1
% O7 V I' Q% n7 I4 p+ Y" F4 C! ~ - }
$ `/ Q2 Y- j; r! r n, P& u - })
& C* R3 i+ N! { - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">4 ?! P) B, g" ?- W% f
- <p v-if="seen">现在你看到我了</p>
3 |6 q x$ n7 C2 h' q! G( y9 H - </div>
' N, c, z5 B* V) a1 w/ h# X0 A - 5 p7 u. S' e( a, m; j3 j5 e
- <script>
- |1 f5 @& }2 |; \. u; k - new Vue({
4 T- G$ F- u; K" H5 q& H - el: '#app',- i9 K% _, L+ Z0 @7 [# Q
- data: {, H3 j! q! K s8 r0 y
- seen: true
% T( H0 U0 f; K. I) l! ~ - }1 t% S" l( [& Y" w$ O/ R) {2 k
- })
( D6 c0 B/ T; P5 {! u: @+ M - </script>
复制代码 5 K) X, g% p* x) U* W4 c. Q2 W& [
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">, O/ }$ k1 z3 m; @% m" [4 }
- <pre><a v-bind:href="url">菜鸟教程</a></pre>
- W( Z, X+ V$ S9 I- P: U& e - </div>$ P7 Y% z5 l3 A, U, R; ~6 J
-
8 S& B& k. V6 }: v8 }' g - <script>
8 u4 Q3 a6 h* E1 d+ `/ R7 I, _ - new Vue({# ?8 Y- c- g" T1 ^& T1 H
- el: '#app',
* O! }4 `1 ^+ ~3 n; T6 E - data: {. N0 v9 k9 q8 f- X; e h
- url: 'http://www.runoob.com': |' P- u: C$ s7 y; I/ B- Z
- }
, m; G+ K2 E2 @; L/ l- V5 W$ a - })8 `6 J! b) g7 B# @7 j+ b( K
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
' d# a1 v! ]7 V" t
- <div id="app">$ E S6 y' X" [9 Q
- <pre><a v-bind:href="url">Vue参数</a></pre>2 A; p6 }1 c; G+ ^* T
- 7 w" q* L* l' p/ E. Z7 Y" J' Y
- </div>
T; F4 M' O4 A+ i8 Y
9 O, @" y" E) z6 D ?- <div id="app2">; _' {8 m ?- W
- <p v-for="val in arr">
" P8 H6 a; N# z, e# h8 c! ]6 ~ - {{val.a}}+ `# J0 y/ C! h! \3 d; a
- </p>8 v, j1 Z, e8 O* }! _
- <a v-on:click="tap">点我</a>2 X) N# }- e7 Q$ p3 E* J3 u
- </div>) R) \/ H v! v+ \$ l% |) T6 U0 F
- . Y* h# j3 M. V* g$ i
0 t: e. I' ?5 E- <script>
3 N* Q4 _2 c( {1 L' Z, k - new Vue({
. D, O) U! f# S) Q - el: '#app',8 a& i+ w. @3 s. N- ?. R! H: x
- data: {
2 V( u6 t5 t6 @% P - url: 'http://www.cncml.com'
% j0 O2 |. y" k3 E @$ Z- i - }
+ g4 J( x$ g* X: {8 A' {) M - })
+ e2 ~' Q1 d: `- D9 {% V - new Vue({
3 U- M1 o, x. F) T# t: V: m; W - el: '#app2',
9 s5 J6 J6 b( @. O8 U6 K+ v4 x4 Z - data: {4 l3 m% R; w, Y* V" f: _5 S$ V v
- arr:[
& ^$ s" j# B5 D5 \* v r$ s - {a:'bb'},, Y9 W# F. C& a; A- x4 d
- {a:'cc'}
# P' }3 `. ~* X4 z8 y( | - ]+ {+ a, W0 i4 Y' g' `- g
- },3 B, j: m5 z% {. f" y- E5 @
- methods:{
( O- p- y+ Z6 R3 `2 s - tap : function(){+ R# m- W9 _! r' A
- this.arr.unshift({a:'new'})
8 O3 s2 M ?; y% L - }; t" ?8 t0 D7 k* e" R
- }2 ~" f5 D+ ~0 B p
- })1 s9 o7 Q& e1 L- y3 U$ p
- </script>
复制代码 - P9 `) [( o# l/ p% {( Q
4 {" s2 {. K* z' Z. ?9 M
在这里参数是监听的事件名。 2 O+ ?' b% }) w7 j/ _3 w/ j
|