Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
6 I0 ~) x/ z; T - <p>{{ message }}</p>
4 h8 I4 J! c6 R. Y0 L, j - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
: s4 g: o9 ?9 ^8 Q" \9 | - <div v-html="message"></div>
' F7 N% h4 E) b6 \ d: u - </div>1 V/ \6 _$ u, v7 k2 {" ?
- + B6 c+ D" W% O1 ?% i/ ~0 ~
- <script>
9 Y: I1 V! I( H- H9 P9 `9 w - new Vue({; C% A" e$ ~$ H( |) b
- el: '#app',
' X6 }; Z/ T0 i& U - data: {- o0 r% y5 {/ n# l1 }9 D0 M
- message: '<h1>菜鸟教程</h1>'! A0 W( H8 s3 F4 P
- }
' {# s8 e% K9 b7 G( Q - })
2 @) ?8 p4 k$ y- o* O - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">1 n- l8 q( }, k
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">7 U w: e, F# v) `: o
- <br><br>
3 ?. c5 Q |# l - <div v-bind:class="{'class1': class1}">$ p8 F$ a1 z6 t, o8 }8 U
- directiva v-bind:class
3 h' w5 S, ^% v: | - </div>
0 s8 P9 |3 N% o4 s - </div>" H2 U' k D( }& X8 q1 N- I
- ( B& {& [2 K3 P& V6 {* E9 o: ~- O
- <script>; G/ T, `; x4 o
- new Vue({; D! \% c Q7 Z4 a0 Y/ P
- el: '#app',
+ B3 Q3 \1 H' m, n6 f9 J8 I - data:{
, G! a: @$ ~4 Z1 o" q/ q+ v - class1: false
0 }2 g) |5 J! [ - }
3 ~# w! u+ S/ {# m& I1 Z/ s& l- w2 G - });, q" D; `4 N2 Y
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">5 D. |6 c2 _* U9 m8 ]) ^$ L# F4 T1 w
- {{5+5}}<br>
. d( g3 j0 z+ k) @' d - {{ ok ? 'YES' : 'NO' }}<br>) x- W; ^* R2 b' ?
- {{ message.split('').reverse().join('') }}: j; @4 M' r8 P- W- u) V
- <div v-bind:id="'list-' + id">菜鸟教程</div>1 P5 n3 N8 h1 u0 n
- </div>1 J8 Q7 P) I8 }2 I6 O4 y
- " Z- Z" t s$ L" O
- <script>
8 K5 q$ Y7 Z- i5 v$ r" ?! C; X; D - new Vue({
: J" |. ~4 @) S& h0 v, O: |7 k - el: '#app',
, X8 B( l3 }8 N% f8 [3 D - data: { ?4 n A" w F. x; b! y. T! m
- ok: true, J: M8 @, U; R* ^8 g" v7 @
- message: 'RUNOOB',; J. O. Q$ s! T6 R) s* {/ M
- id : 1 n; @9 i# {( F- [
- }
, v- ], U: o; J1 w- T - })
' S6 z) Y5 z3 ]0 }1 ?, C/ v0 u - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
, V5 H6 l$ `) ] - <p v-if="seen">现在你看到我了</p>
' Q; n0 `$ h! U6 T - </div>
, [+ J' ?2 H" Z) `0 ] -
0 H4 G* Q3 b( a - <script>, ?% U5 B. d( F' ]% W9 E
- new Vue({
7 D5 O. ~/ x# `2 e - el: '#app',
: y& H: B; M% `4 D - data: {
& l k; I2 a* d) E7 _# ? - seen: true
; m( k( h/ b. ?& l' N5 U3 c( W0 J1 c+ \ - }* ~5 H/ |' O0 W4 @( u/ W2 H
- })& w$ x6 v$ x. Y
- </script>
复制代码 $ y3 g0 R# O2 L% v0 T3 a/ J b" r' A3 \
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">, ?7 o/ q) _9 S! ]+ S2 d
- <pre><a v-bind:href="url">菜鸟教程</a></pre>
7 m' P* S; v$ t! P, h - </div>$ n5 B1 H5 t9 e2 t& s, A l
- % W& O& V! a9 [9 ]$ [' c
- <script>/ @2 ]6 f0 S2 G. h( b+ A* e2 s
- new Vue({! v/ f) g1 j' J0 T" t
- el: '#app',
5 R1 A# r6 S+ ~: g9 r# j - data: {" M$ \# N0 B: n' h( M3 Z3 {5 H( y+ j
- url: 'http://www.runoob.com'. G/ T7 l- `6 X) |
- }
3 u$ A4 X q2 |1 o* ~. I A - })- l7 {/ D6 C' Y5 n" B
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
$ A k# b1 Q' ~' B' f
- <div id="app">0 z$ M* n7 A( R/ F0 j$ g+ t
- <pre><a v-bind:href="url">Vue参数</a></pre> s& j4 u n: r
- " W7 X) r$ v, Q% {* ~
- </div>
7 e) C4 y0 r4 W3 M2 W0 x* | - / j& O8 h( [/ }. I2 F
- <div id="app2">2 C8 \/ @+ C/ z6 P% b9 |5 o
- <p v-for="val in arr">
) e( V: F( u* L5 Q* M - {{val.a}}0 ~. Y, V4 b8 d- l2 m' o
- </p>
' s6 H3 l8 F5 z% L1 m% ^ - <a v-on:click="tap">点我</a>
* B) k0 _% x3 ^& U. @7 L - </div>
5 r2 ]1 B- Q& V$ i) F7 y
$ n7 d* Y: n" T7 Q) r* A9 c; }- : X2 `5 r7 v8 j8 e/ Q
- <script>4 P5 w# d Q0 s! k% M6 x
- new Vue({# k9 c! E; |& V/ Q
- el: '#app',
( m( z# J5 T" S6 T7 @ - data: {
" ?% j6 M' T2 H6 X - url: 'http://www.cncml.com'9 T( Q5 o' }* w# `- z
- }9 q8 X, y2 _! S
- })
' H- x! w- u7 s4 d - new Vue({
H6 [$ Y8 Y) J0 {5 R8 y7 W - el: '#app2',
7 c& }/ x7 m$ p) V! c - data: {
9 F$ t- T# v% t - arr:[
% W. h/ }( x6 E+ w - {a:'bb'},
* z. \* L/ { n; h - {a:'cc'}
( H' ]% m7 ^5 v! G - ]
- y+ B! d8 ?' J b6 _* K! o - },
' \9 Q/ Z! t8 \7 Z h - methods:{$ i+ Z2 L* o o6 k9 l6 H
- tap : function(){
( X% i6 j% e: H) s4 K8 m) ] - this.arr.unshift({a:'new'})
- m" @: k$ \# w6 y1 Q, j - }
" W) Q4 Z' b* o! J - }
" X. o( \ k- f$ ~! N; E, p - })( A5 `* |* q! o$ H' E
- </script>
复制代码 1 f& L! k/ W1 @. @$ ~( Q4 A4 K
. L6 U# K; C/ J- ~; X
在这里参数是监听的事件名。 # R0 f" V( N h# x: Y' u& @( y8 C
|