|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
. x+ ]' ]; D9 L c4 J - <p>{{ message }}</p>" f( G, b& Q& `, \8 X; r
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
8 c4 r! J$ Q# T - <div v-html="message"></div># f9 ~: A8 J3 P) r
- </div>
7 F; O- M8 k+ a, W) s# B# i, [ -
- M4 m3 n1 M0 w! H1 @2 T0 w/ Z - <script>. G) U+ Y2 Q* r) Y
- new Vue({
3 o& N, B- K# D x - el: '#app',( l! ~+ p/ ^7 k2 P; b
- data: {
L% m' I! a: n3 I/ U3 } - message: '<h1>菜鸟教程</h1>'' H! D- C1 X* i$ H2 j6 L
- }
1 W4 v% W4 w5 l5 D) h: A7 O: D s - })$ q8 n( {1 n0 b
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
. s3 _( N! ?, B2 h - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
* q1 }/ e3 @5 S# B - <br><br> \, j9 p' [( n* G- x Y& S
- <div v-bind:class="{'class1': class1}">
5 ?6 ]9 n# y5 w( i. b# ]/ G - directiva v-bind:class( p, D5 l: ~/ L5 G- a( p
- </div>
* s' i) T8 `6 C( \' c! K. O( g7 J/ } - </div>
+ z' U& M( Q! V& u2 a* O8 Q, [ - $ K" k1 x) L. j1 v& ?
- <script>
& M" Y4 H3 i6 w0 p1 h+ v9 M. a - new Vue({ g2 e/ _2 {/ v& w" R* D! \
- el: '#app',. n; ~9 o) s; S
- data:{
# ^1 [0 m0 ?, V3 s - class1: false
) p, q6 N0 @5 X7 {4 ?: d - }
- j9 }( O6 r5 t% Q+ [ - });
. l' i L1 W+ O1 q$ ? - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">: V9 w7 V D2 p% R' s% U1 G
- {{5+5}}<br>. |; ~$ I X9 M3 W! @2 G* ^
- {{ ok ? 'YES' : 'NO' }}<br># E: t, C# v# W; V q
- {{ message.split('').reverse().join('') }}
# X1 t! W u+ I; n/ ?& j3 U( W - <div v-bind:id="'list-' + id">菜鸟教程</div>
, X/ p" ? B3 b5 t - </div>
: y! t; [* r, l& B5 g" Q( Y' S( D - - h" }) ^8 u8 ]* a8 U1 |
- <script> H2 T( b0 S+ i: g! _. }' q5 m) n, Y
- new Vue({
/ I4 W' O# G3 T - el: '#app',. ^" ]& q2 F: ]* o9 c; t
- data: {$ ~; q2 L1 }8 C$ b4 @( M
- ok: true,- D2 \: J/ c+ c, n& ~. |! A# ^; n
- message: 'RUNOOB',
3 g0 o& T7 j3 b* [" B - id : 1
: t# Z; H' ? M$ g+ a& v - }
1 \) g3 ^+ c% \7 V0 k - })
9 V: X( v* [' u. ^# u - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
4 g( j" [ r! b" y3 q - <p v-if="seen">现在你看到我了</p>! O# [1 ~7 I4 {0 Q6 g! k
- </div>, g' ?6 j9 m8 \7 F% V. g
-
8 P/ G5 H2 b9 g, _4 }4 w1 ]) L - <script>, w8 T7 |" Z% y- I; I" \5 {" T
- new Vue({
7 H5 u- l4 a: @/ d# ?4 ?/ T - el: '#app',
$ Z" |) J/ |! D( Y - data: {5 b. _& x! j( ~0 n- Z/ S5 T, g
- seen: true
7 {$ S( r/ ]7 [7 E6 S& C - }
) X8 f) G' q2 m5 a) z5 ` - })( t/ a5 i) L6 d2 M/ J) q
- </script>
复制代码 3 V- B- c7 ? R5 E. | \! P& b
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">, N ^1 x: Y; S2 f
- <pre><a v-bind:href="url">菜鸟教程</a></pre>
4 D C4 j- z( D6 W - </div>, [9 J. R6 a- z- h: q
- # B2 T& N4 f2 y
- <script>7 P; [ ?5 B# x0 M& [0 d
- new Vue({
. a* ]2 s8 X; T6 S8 [- ^) [8 r. ^1 q% [ - el: '#app'," V! d y" S) p/ ^& X% x/ j _) Y
- data: {
& Z6 }1 R( {3 z+ ]- K7 s" m- c4 O - url: 'http://www.runoob.com'. B, [7 R+ P) }* I! G3 Y4 x
- }( [; [! c3 _& R( B9 ]; s/ {) k
- })+ u) [" e+ e$ V, J3 Z9 s" f3 a
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码0 c5 T6 _5 t% m6 Z. r7 B. I' H2 n; b
- <div id="app">
* u9 F$ ? ~ a. X - <pre><a v-bind:href="url">Vue参数</a></pre>
, X! k8 k a) k7 @+ s
1 U# Y- ]8 q7 W- y5 q- </div>
& A7 j& A1 f# K, B. H: w0 T* ~" G
: Z ?2 H3 k& g6 I- <div id="app2">! B5 ?/ Z! d: i/ J% x2 n! u
- <p v-for="val in arr">
$ U; b6 t8 `* E; C2 X - {{val.a}}! S' V- U$ W, O3 o& z J4 r
- </p>
* X7 {- O0 u2 D! [6 G - <a v-on:click="tap">点我</a>* {1 \5 K. _+ D. o
- </div>
9 o% G. X: v& Z - * H# c) S2 h' |$ ]/ ]2 G! r
; q: r# H3 F M- z6 G4 g- <script>3 r" t% d) G+ g) `
- new Vue({
$ x6 t% ]4 K. L% |9 u/ b+ i$ o9 x/ p - el: '#app',6 x8 I) Y7 K1 y* w
- data: {
( L* o# o! @' o( v3 _- k" w1 @' \ - url: 'http://www.cncml.com'' ~, `% O" @- d) U: e
- }* X6 `6 w+ h% }
- })$ |( W/ U. @" f* W5 I- l6 s3 ]
- new Vue({
0 X5 G0 ] ?6 X Y$ V# I- |; ^ - el: '#app2',
' c: |! e1 b8 A/ W& d- L - data: {
9 s$ D, |8 f0 Y* N' Z$ @+ V+ m - arr:[
, f* K2 Z3 ~$ h - {a:'bb'},/ t) _) {0 T2 ^8 f5 p
- {a:'cc'}2 t" ?" I7 h' o, |) l% b s/ I
- ]4 O& [# O3 O+ S6 ?+ F4 u
- },
k/ q4 z) A/ J A7 W - methods:{8 O- Z& V( D' `8 F3 Q
- tap : function(){9 U& {( g" O, H- @. w& v D
- this.arr.unshift({a:'new'})1 h3 i2 O) X" K! y4 Q* @; L4 A
- }
' `) f6 f( h* R: p - }
/ d3 o) ~' [/ N- p5 G - })
0 [- q! p; F% G% C/ G6 r, T% T - </script>
复制代码 2 N. P5 t0 s+ N4 b
$ O8 U1 I) B1 \* v; D4 }
在这里参数是监听的事件名。
7 ]2 j' t W& \+ C! J |