|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
! d! F- Q2 Z/ Z. f - <p>{{ message }}</p>) q. z% E. P2 @' |" N
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
) { g8 R j, m6 T/ ? - <div v-html="message"></div>
" C+ t. j5 Y% V5 q - </div>
9 m0 L( `( |7 K* E - - D. t$ m2 v* s& n$ T
- <script>
}5 v( ^ p" {( F) D& A( j/ T+ F - new Vue({% ~2 y" d8 J( j: ^7 y: c+ U
- el: '#app',
" J0 s8 j! ]+ j - data: {
0 M& }: k* M4 A0 _2 N2 X - message: '<h1>菜鸟教程</h1>'; m/ O- k. ?# _
- }: \, N- H# ^# D5 l
- })& l% ?+ R1 D, d/ g5 `
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">, z# w7 N" u% e1 I
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
: a; r, ^0 b2 T% o W, K0 w - <br><br>
$ O0 U c* h% k& Z$ { m5 F - <div v-bind:class="{'class1': class1}">' N! {6 g% u8 M, C5 @
- directiva v-bind:class$ f I/ ]+ m) b0 n) ~& u
- </div># d$ N/ m4 o# T9 Y4 l1 C- i
- </div>
. H' b/ [1 j1 C, C0 Q. P -
; T& \1 q+ s8 c4 j K - <script>( G1 k9 X) Q" `3 z0 Z
- new Vue({ |# c7 e: v, k7 O0 w9 V
- el: '#app',1 j, m- z/ a* u. |& z
- data:{
, d8 z% C6 V, ? q - class1: false
. @( \# }4 G3 P. K& J - }+ l+ Y; h/ j% j- j6 | M8 l
- });: D9 O8 V; N6 r
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
' p! ]- a- Y: l# m( M& M t# b. D - {{5+5}}<br>* O( C/ H5 @3 J+ j
- {{ ok ? 'YES' : 'NO' }}<br>
6 q% d p* K6 D2 n# ] - {{ message.split('').reverse().join('') }}
6 m4 @, m6 i" \$ ^ - <div v-bind:id="'list-' + id">菜鸟教程</div>
- B: w4 l8 Y% v - </div>
7 ]$ Z4 a3 O- B; U - " E2 ~& O& D, E, X
- <script>0 u+ N( l, b* F+ J: w
- new Vue({. E/ r7 y& ]9 {2 J" X6 D- B$ X
- el: '#app',6 y1 v' p8 h0 p% ]0 Q8 M/ A' j8 M" O
- data: {
; A: J7 b6 S1 s# S- |6 O7 c8 _ - ok: true,
_; F9 g% e; P0 x. f* x6 _ - message: 'RUNOOB',/ |/ m4 G3 a7 Q6 ~ W8 c' G
- id : 14 x9 ~$ k4 ]7 w( o, \. a7 w
- }; C$ {" b. P5 u1 c/ a/ t
- })/ y/ C' Y1 \" W' }1 D
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
- W7 j- I2 T* z7 j7 ^' L! I% E- } [ - <p v-if="seen">现在你看到我了</p>) u0 `5 ~( m: ^* b2 r
- </div>+ W4 G2 M" r/ ?, D1 \$ m
-
. d; O; o! n4 E' m$ l% g - <script>2 Q$ Q9 o2 {7 U$ T, T8 ]+ ?
- new Vue({
7 |, X3 x* L! ^# G+ }" V B8 n - el: '#app',
: N1 }$ {$ F% n! o( n - data: {. h- p+ `5 @! [3 V
- seen: true
7 d# x' @, p0 ^# B; V0 p* E" e - }
; }& _3 }9 J$ z7 c' \! _, _4 Y7 y% Q - })2 Y8 `+ F" @/ s! W9 a' p$ Y) i
- </script>
复制代码
0 a; y/ k5 F. J. G3 F* s$ I这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
' o' B. ^" S9 H2 T! E - <pre><a v-bind:href="url">菜鸟教程</a></pre>
: |/ m `) j! h3 G( l6 l - </div> R. H+ m+ R6 _( I |( J
-
/ o) |; q. d& A4 P4 E - <script>, J6 O8 h+ [- e
- new Vue({
" L* n9 ]+ J9 d - el: '#app',
3 I; |4 `: M/ X, A - data: {* a; `0 I8 y- A# \- U& @# W1 b
- url: 'http://www.runoob.com', M+ P! F2 ]0 W( b
- }* ^# m- \ z/ ~% N/ ~: _! K# d$ s
- })" w9 y- Q: I# H, b. d) @ n6 q
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
' S1 m( Z# K2 O6 W- x
- <div id="app">
; y2 L$ w" m5 L - <pre><a v-bind:href="url">Vue参数</a></pre>
3 R& x: `- B$ [* I# ]8 \$ p9 H - # H) X/ f; ~5 C' N3 l$ \
- </div>
& l; u) ]6 q/ ~% U1 O! M% k - - L2 g) M z0 l- k! b0 P
- <div id="app2">! D0 C* F7 `( s
- <p v-for="val in arr">% S4 F" c, I* o5 L* v! ~8 r$ @
- {{val.a}}
" A5 s6 C7 ~$ e0 x1 O4 t+ N - </p>
# g, S* o* D( [! N/ w8 M; e/ } - <a v-on:click="tap">点我</a>) E4 y. M5 r" M& D1 x
- </div>
: t+ R1 L" U- |7 d% c/ @ - " |% \6 Q% X& n/ n' h" [
5 c2 F- S- v% q) G+ o3 u2 u6 {- <script>/ T6 S% {& Z h
- new Vue({4 x5 g* A9 f/ O; B- Y/ r+ z
- el: '#app',1 A( W& O3 h5 l3 d K, F
- data: {
7 l, z# g* s; f0 c - url: 'http://www.cncml.com'
, f7 L. a+ _, f: a) E - }
0 \5 F) Q; w% B, n/ K; Q - })
" A, C, X5 N3 q1 S) D R8 t. u, o - new Vue({
4 Z7 x0 B7 M M5 t) h( M1 t2 b - el: '#app2',
2 C: |3 {$ C7 p+ K - data: {
9 I; @1 f+ L9 i+ l - arr:[/ X+ m9 y, R0 m+ ]& M! P) j
- {a:'bb'},
- c3 T0 O3 c$ d" o& N - {a:'cc'}
3 n1 o e% [& t7 ^5 z8 w - ]' l9 z* o# z* q1 o) [* o
- },0 X& [# j1 D) x; Q. v5 _
- methods:{( v f/ J8 F$ p' {
- tap : function(){& ]3 r8 f0 B& F
- this.arr.unshift({a:'new'})
: }) v! L) ]' d% Y- L. d0 t - }
# s% R8 \$ B6 ^3 G - }1 l' |. |8 M! N3 t0 Q
- })) e, z& h( X. q' B1 ]" ]
- </script>
复制代码 , Q. w7 `- G n) ^$ n" g' `( K
( ~0 x) m1 v# K9 e' V+ N) C' Q
在这里参数是监听的事件名。
. o# Z" M+ I% B% x E1 N |