|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
/ Z" D# z# ]& k2 W5 E6 ~2 V - <p>{{ message }}</p>
& S7 b- J6 K. N# N1 @4 @4 v+ n - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
, M3 Z' g# B0 V" H# e - <div v-html="message"></div>
0 x" k0 k& ]9 L& L - </div>
# O' ]* Z; `3 L7 d1 h Z; c# } -
& v, N+ i7 C5 l* k0 t- l3 {8 l - <script>
- p( n& m4 O! f8 y# L - new Vue({
4 W; ]8 K$ C1 n4 j - el: '#app',
7 j$ H! [) f- Q" h2 Q - data: {+ W: o2 ^. Q1 i' _9 Q e2 J
- message: '<h1>菜鸟教程</h1>'
! s6 a) Q3 z$ w$ o0 j& X& w - }. Q# |" d, C% F9 H' r
- })* r' S% X7 p$ i5 u' L6 s
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">2 g8 `% p* x5 C
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
4 Y- d* e7 p/ A+ T6 a( v+ J$ e: h - <br><br>
( b+ w9 ]4 e! ^6 ~6 ]* e$ a - <div v-bind:class="{'class1': class1}">
2 F; E9 r9 F5 N2 | - directiva v-bind:class: L5 V, ]- M3 y: N: z) c+ Z; F
- </div>
, I! p. Q' Q6 p( r - </div>
5 s1 O9 P, t' S/ r" \( \8 W2 k - 9 E: Y v% x8 b7 W1 I' o
- <script>
' @9 f8 M! h: v% \! j, V - new Vue({+ o Y" \- _/ k/ ^8 W* O, g; v% T2 B9 p
- el: '#app',( g/ R; i8 o |! p- Y' @! v
- data:{! H8 J. W1 V* u {. h$ f7 q# S
- class1: false
6 a2 ?7 e- V9 Z I - }
4 X. f, T$ f! O0 ]3 ? - });
% W7 s# D9 Z" I - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app"> q0 Q. x+ P$ p9 y: W' E" V
- {{5+5}}<br>
! k+ {% |6 ^* x# y1 c$ H* E - {{ ok ? 'YES' : 'NO' }}<br>
/ Y) ?$ m5 v$ X+ T" k - {{ message.split('').reverse().join('') }}- w/ m2 E6 {' k8 D5 D, \% [' T
- <div v-bind:id="'list-' + id">菜鸟教程</div>! O9 a" K3 @ C. ^0 i
- </div>9 e+ y1 f: R5 s( q8 ~% g, J! n
- 9 B u' ? ]& E+ x; W J7 R
- <script>5 d. j; \# \$ \
- new Vue({
* [9 [6 t4 W" X7 n' |! m' S - el: '#app',
. y" B% o; b" g6 m. i; U( d2 N$ P, | - data: {5 g& M! I7 s) \- x( N
- ok: true,7 d- ^# J1 X7 a9 g, I$ d
- message: 'RUNOOB',
0 r x% J5 U7 ^% a+ `6 c% i! Z - id : 1+ u( X! }0 w7 c7 P7 ^
- }
6 S" o* Z1 b$ m( }+ ^- o I - })/ m; r7 ^. k, P: W& t( j
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
* D5 Q! V. G9 d1 g5 u; \ - <p v-if="seen">现在你看到我了</p>
% f- K- E8 {7 K) R# G2 e - </div>) [' H/ P4 M6 O; ^4 @9 |! {
-
/ c [: v5 n% x; O - <script>7 @; T6 j* p e. a3 w
- new Vue({1 A; m% k, k5 Y5 ~& |5 n
- el: '#app',
' P6 }3 b" c- l7 T - data: {
* I( n7 u4 r' L - seen: true
5 b6 Q6 z% M! }# g - }
3 L2 |0 d) o8 j* A5 p: V - })# E( }. g( g8 C! p, v) E/ M2 i) [3 `
- </script>
复制代码 6 c0 y7 i$ C+ F7 h8 [5 d* H: d% k0 j
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">- I) k# y; x7 x
- <pre><a v-bind:href="url">菜鸟教程</a></pre>
. `, `2 c5 z# Q1 S5 E- q6 d - </div>1 l, O0 s9 h$ h% r4 N6 t: I
-
& B0 t, ^5 a% E3 }; ~, a! L# N - <script>
- t0 p3 l% b# t5 P0 ]3 x/ q6 ?& C - new Vue({3 L0 } m6 T6 m) Y- ?) Z" ?2 g
- el: '#app',
, J0 Z6 Y4 O& _+ q1 D( ~7 U - data: {
/ T/ Y7 `% o" M7 G - url: 'http://www.runoob.com'# \# X: {; y5 j E/ [' i e
- }
6 Q# v, U4 o3 s, r# X5 o - })2 O( H9 o7 [. J) s6 M
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码8 e7 E B: B( q
- <div id="app">
6 ~. `1 I9 [( W. d* V. Y. t3 {+ K - <pre><a v-bind:href="url">Vue参数</a></pre>. ^; Q! y2 u7 D. H, o
4 f4 Q( |, d7 E+ m8 ]& P- </div>
- g4 ~# t) D1 S
1 C6 n: S, e1 r7 e b6 A6 m% |% L$ w- <div id="app2">
9 s0 W1 F" D0 \( w+ S - <p v-for="val in arr">
6 {; g0 S9 ]7 n2 X) ]4 ? - {{val.a}}
' h3 l; T& p4 m8 ~, o p; `" u - </p>
5 t+ ]# Q5 E- }; d, ?! A - <a v-on:click="tap">点我</a>
9 ?& X' J t: ?* }) ~1 G - </div>- q1 C+ ]' _: [& b* W% D5 D6 N
Y7 K" `7 | u/ y0 |
. \0 A. x& z3 q9 |- b" `- <script>
1 }. z5 a6 y* j' a - new Vue({
% C& p' ~2 [& v7 E; Z - el: '#app',, u# i, p5 t3 S6 e5 K: _
- data: {
! [8 d0 s3 v3 Z, { d, B( ?" z- I# ? - url: 'http://www.cncml.com'6 j }1 P; o2 b) z+ x! p7 Q/ z; i5 w
- }* P9 Z' N' O+ L6 A* n. x
- })
9 t* u. a' w' y* W [9 N2 T: \ - new Vue({
& d8 j7 s" Z7 M P - el: '#app2',
5 u: E% n" ? | - data: {/ _/ J; A, h4 C5 B" }+ p! ]( g
- arr:[ u1 O" L* m( g
- {a:'bb'},; ?2 y G- B# m2 b" G
- {a:'cc'}; C1 Y' `: _% x. P9 g6 X6 b
- ]* A- X# c+ j4 X/ e0 B8 P
- },5 b$ [1 ?& J/ C$ l/ w- V' p
- methods:{
$ k/ l4 x) {, {1 z - tap : function(){6 w5 |. a" {( B L( ?, `
- this.arr.unshift({a:'new'})5 s+ \4 B( a: l; Z9 }8 p1 w }; s
- }
* G! }2 B& a9 g - }! t A: ~8 s5 U( e
- })7 n1 L$ d& [/ T' C3 B, z
- </script>
复制代码
, b( _8 r5 L7 W0 l3 Q
n: A9 t/ I6 L: q4 h: ^; n
在这里参数是监听的事件名。
/ ^$ z/ U% C6 f- ~/ | |