|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">6 E9 Y! G4 ^% n3 G+ |. _, j
- <p>{{ message }}</p>2 k# x8 y' y5 m$ N& M1 x/ o( v
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">, J8 n& k5 p8 }) d
- <div v-html="message"></div>. G% a+ p2 K( o# f% U$ h
- </div>
7 W+ ^. A+ ^ S3 C -
" i2 Y: K0 a' g8 m7 B- S( H* W - <script>3 ]4 H& D) Y1 b, J
- new Vue({: l* E& R# ^* N. p( @; @
- el: '#app',
9 |8 t& @* t# p: J; l - data: {- I9 W V" G% j# u [
- message: '<h1>菜鸟教程</h1>'
& Q, Q+ Z* }- V" U- ` - }
i: L( A7 _& k& m - })
7 t; Z6 {- [7 v5 h - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
: g$ K& b9 d3 W+ _ - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
: ]; T* q& g, u) r. F1 ~5 C - <br><br>( Z2 v7 J5 y+ C: U
- <div v-bind:class="{'class1': class1}">
q! S* a0 N6 V# V- k - directiva v-bind:class
0 K' b/ n" _3 h5 I* P - </div>& r/ u. c, Z9 _( a
- </div>8 D6 I+ `/ I f+ {1 L
- 3 p: Q& G# A, M5 ~4 R! j
- <script>
( t7 c: x* x" a- f - new Vue({# q# b5 P- {. M { Q& h
- el: '#app',7 d7 ]! n( d* a0 E# \
- data:{; |6 R8 |0 t# i* z$ f! n; [
- class1: false
2 o3 Q. S; T% l6 H/ V/ _ - }
5 v! r2 |2 o Z - });
9 L i$ d& \& [2 O8 e4 R - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
0 B( s# Q' S- |( ?" J& ~ - {{5+5}}<br>
$ @+ d4 \( ^& f3 V4 R4 l8 [, i) Q - {{ ok ? 'YES' : 'NO' }}<br>9 e( B+ F, ]% ^2 z# v
- {{ message.split('').reverse().join('') }}
$ @: m9 x. N; |2 o - <div v-bind:id="'list-' + id">菜鸟教程</div>
, p) N$ o# U& _! o; w. } - </div>& l V- G% R } i) m
- ) B/ Y0 D' A0 I- Q5 U
- <script>
d; h; b7 T$ s - new Vue({
% M) m1 l8 |$ Z# }% x- D; M$ M - el: '#app',
* l0 h4 e9 U5 E0 H" {% [! Y4 A - data: {% H9 Q6 T8 X0 j/ h1 X
- ok: true,
& X' g1 A7 p* z8 t - message: 'RUNOOB',6 _1 o# I; G3 n, N' S
- id : 1
- ]6 s% V/ ]8 Y+ U - }
: D U W" b" D9 W4 N - })
1 @4 t" O7 o5 a - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app"> T- E C( w$ d; g3 p& {! S
- <p v-if="seen">现在你看到我了</p>
3 v6 Y0 g( q! q( [ - </div>+ ?/ A2 b T8 r
-
: \( Z2 |: U4 z) {- l1 I - <script>
0 c8 |& G$ p, Y0 [+ z - new Vue({
5 ?7 y; w& m8 G/ ^ - el: '#app',3 k. K( {" @7 D J) ~/ ^. a
- data: {
3 s$ V; k! X9 B/ \ ? - seen: true
5 X3 ~' \3 V$ r5 Z8 V - } d3 O2 W1 P# o. I! _" E g
- }), v4 H) _8 r ]/ `
- </script>
复制代码
2 J, x7 a1 T+ t8 Y4 x) L这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
/ M& t8 d0 i/ H M" t/ Z. [ - <pre><a v-bind:href="url">菜鸟教程</a></pre>0 y: _1 ~2 G/ a2 S5 U# ]
- </div>
2 `/ U" A4 o$ q4 Y+ ] - - o' _9 L+ q/ P8 z4 x9 ~
- <script>) J2 I9 C; J1 e; ^% g7 v
- new Vue({. C. G& b' }4 G
- el: '#app',0 a7 O8 h( r; X* t
- data: {: Z; p0 E# x+ ?, `
- url: 'http://www.runoob.com', R) m! G. o% D. ?/ v1 n
- }) }. K/ b/ O5 }% D
- })
0 k K# I+ x+ A3 o; ? B - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码) C, r0 z7 n1 t" B n8 B1 I
- <div id="app">2 k! r: X* [3 V
- <pre><a v-bind:href="url">Vue参数</a></pre>) |; {3 h7 P2 J0 O
/ Z; _' d' a* \: ~1 \- </div>8 U9 |) Y6 D" W0 g* Z) m
- # w( d, ^. o$ y0 _0 }0 X
- <div id="app2">0 S( f( F! S& d* |: s4 _
- <p v-for="val in arr">
) C/ w- b% b' d* R - {{val.a}}
2 n4 r, X; E" V0 a f- U9 r* o) x2 H - </p>
. @. j' [$ @+ K' Y8 H/ e+ ] - <a v-on:click="tap">点我</a>* F% J R7 J4 c) L) C: t& }
- </div>
. s5 x/ K+ g/ p0 Q( H; i - 0 B3 [6 p( k& U
+ O3 e2 h3 N* w% w( y, b- <script>% p* v# P6 ]) X i
- new Vue({
; n0 t' v0 j" A3 } - el: '#app',3 Z: s/ K; L. `
- data: {
+ g6 ?! G1 v/ M& z# j - url: 'http://www.cncml.com'1 h" w6 ^. x2 n' \
- }: f& R! ?& V r, q# C9 S
- })' ^% |: I& H( b# B" j
- new Vue({
- _. N- k+ w0 \3 C9 i2 F - el: '#app2',; v. G' ] a$ |0 y$ m2 N8 A
- data: {; n) a$ }" ]. Q, k& x7 W! R
- arr:[
% M& v9 [# H4 w* [% Y - {a:'bb'},: r8 K- F9 v6 A, }! `" ^0 b
- {a:'cc'}% p6 @0 C. a4 m& u: O1 K, b
- ]( ?: P* ~+ D4 D: C& C/ c
- },+ C' g7 v9 L/ q1 G
- methods:{. ]# ]0 ^9 Z( D
- tap : function(){9 |! G/ V- z0 Q8 G
- this.arr.unshift({a:'new'})7 e3 X" u! t6 g
- }
+ T7 V6 S6 @) A5 P Q) B' r - }
1 I+ `+ }' i7 T4 o6 B - })
- H2 c' r* q/ K+ U6 z( [4 D; w8 E - </script>
复制代码 2 A4 }. E8 L; N, Q- o
) m0 r! [$ I! @4 |' F
在这里参数是监听的事件名。
$ y: p( j) `& M2 z |