|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
) L- H1 M# n5 A# i& P - <p>{{ message }}</p>) X; v7 e+ S1 P8 p" U) t8 O) X- A
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">0 Q3 W4 b/ D& o5 y' |$ O, t% c
- <div v-html="message"></div>$ F8 G! x( l1 i- g1 x
- </div>; ^9 R/ i4 b) X$ i
-
b; b9 ~8 H' f4 F" C- a - <script>2 @" j/ ~; w; _+ a& V
- new Vue({( a4 a0 ?6 j+ p) ~
- el: '#app',5 m: F0 V1 } ^6 W5 U
- data: {- v u7 U! c n; [
- message: '<h1>菜鸟教程</h1>'
4 A3 h0 C( K& s2 v9 h( ` - } S, h# N2 ?, q {
- })
" \ z' J- x$ V9 j - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">4 x% N5 }7 J4 o( Q+ L
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
( P3 `% B' o# q6 I0 y0 q - <br><br>. k, J P5 K- {% `+ K& }, `3 P9 P
- <div v-bind:class="{'class1': class1}">; G/ d/ k& q: d
- directiva v-bind:class
- A& g2 U) A7 ^" n - </div>6 k! e' {9 p- A2 C0 c
- </div>+ i9 Z+ a% o* e& l
- . n% ?1 X% [1 C3 Z% u$ b5 |& d" v
- <script>
1 t+ |8 x4 n3 ~; g5 v6 p4 } - new Vue({
$ i* b% p+ ]6 O7 } - el: '#app',
' ^- u4 V) j- W! z y" q4 C. } - data:{
$ N4 H) Z) `! [) z0 \' X - class1: false
: _, C4 b8 o0 H9 r) P1 O - }
) i- \ y+ L9 |, O3 N' V% t - });
) T# B j. @4 ]) s - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
6 S, G& k! }0 _/ e9 w/ n- e - {{5+5}}<br>$ b- X0 _$ ~# f' @; Q& m7 m
- {{ ok ? 'YES' : 'NO' }}<br>/ C. v0 I3 U7 d' K+ R
- {{ message.split('').reverse().join('') }}( s+ ^+ f' i7 ^! S8 ?9 F, k4 Q
- <div v-bind:id="'list-' + id">菜鸟教程</div>$ y& U/ I# j- C8 T3 r
- </div>
6 d# q# L# ? q: G# E R - 1 R5 I9 k0 S& _
- <script>
* s3 D6 W. g% ~3 ]# f - new Vue({- Q' a3 C: u. @& t1 D. f0 D8 D! W. B
- el: '#app',5 c Z" K7 A( h: V) N m* K
- data: {' |+ X9 {! j" S: u
- ok: true,, x0 ]1 n5 X* `! f2 O; b
- message: 'RUNOOB',
q1 G; ]5 K J% T% z! F% b$ s - id : 1' N' h0 }. g; w6 [* W: s
- }; P# [: b) ^' m9 e3 y9 x& g7 \$ |
- })# G4 g: u1 Z0 J$ L
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">( F( @- A* x% h) Q
- <p v-if="seen">现在你看到我了</p>
, b+ O. o J7 M. C7 B - </div>" I% W! Z5 f. V$ b; m7 ^: ~# ~
-
# _! p6 w4 F7 Q, M$ V; t/ X7 R+ @ - <script>
& o4 V- ^: R3 A5 S' ~+ B# _ - new Vue({7 }0 K% h$ m* A# }
- el: '#app',
% N, ?- Y! M6 C* b- L/ ]9 C2 b - data: {
* Y9 G4 I/ N+ X' C, D - seen: true
4 i3 e3 T6 M: ? - }; D, U! _5 J4 f: e
- }). a* \7 i- O3 w
- </script>
复制代码
% q# i- Z5 p5 P% M2 t这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">6 ?! r% m! w( ^; k3 u; G
- <pre><a v-bind:href="url">菜鸟教程</a></pre>
/ d. ]7 c1 ~- }3 x6 {% I - </div>9 L8 P: c* i8 W5 b# e% C: n5 i
-
4 r4 h6 @! s" z - <script>1 \3 i/ L; U5 _( h3 z
- new Vue({$ y3 R; h# ~* k0 d6 Q" r+ X4 K' N
- el: '#app',3 a1 s) j+ T# x3 b
- data: {; Z) b, `; w) b' J, b* t+ j6 g% ?* e
- url: 'http://www.runoob.com'
+ K) ]0 L3 u K1 A% g$ C - }4 b! B' e, K, k" `, ]1 g r9 G
- })! \, ?. D- a5 g% j/ D
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码* C( {: ^7 \4 n7 {: q6 n Z
- <div id="app">
; J: D$ [* ]6 f$ J1 K2 {. H7 ^ - <pre><a v-bind:href="url">Vue参数</a></pre>4 X4 d( D, c2 d, S7 J, [! C
- O4 z$ S6 E# c% |- </div>
. v& `$ u9 X) q5 X - / q$ d. y$ l2 Q0 f W$ b
- <div id="app2">( ^1 e/ |! p7 i% y- w
- <p v-for="val in arr">' C t; |/ Z0 t# I
- {{val.a}}
( ]; O$ n) D" f' t - </p>2 z9 L3 Y2 X( L
- <a v-on:click="tap">点我</a>$ k1 @( C4 B, \
- </div>, H, Z3 R: q+ ?$ B: D5 d
+ C4 x+ v" }: i
4 u2 ^* ?: s# u5 [9 `- <script>
, ]8 z" S! [" t! g+ b( q - new Vue({& \' `( T/ d# U% C) Y4 J) [
- el: '#app',
! x: k: p) D* P. ~" S - data: {4 g9 E/ F- O! E
- url: 'http://www.cncml.com'
; i/ f0 @& {1 a/ y. J4 z7 D - }! B: q0 A4 ^8 e
- }), b2 z7 B% h8 ^# ?
- new Vue({2 u# I8 |2 ^; W2 o2 [
- el: '#app2',9 O) C$ v; L6 C) N2 B* Y& |
- data: {
& x J p' [6 t3 ?# Q5 U3 i - arr:[0 ~; K" p, p$ r S4 A! r+ u& q
- {a:'bb'},
! A& F. o, Q- o4 Y& C6 }( E( | - {a:'cc'}
8 @% i0 w b* z - ]
) s! H) Y7 U6 O* N1 B; d - },
. E( M! r9 l% N3 k2 D/ Y- k( d - methods:{
% b. O3 @( q; G q/ g+ \6 S# Q0 z- {: e - tap : function(){
- \5 e1 |5 S+ s+ c+ V - this.arr.unshift({a:'new'})
, ]6 q5 E4 k# M6 h - }9 c! N/ f, P8 T; z
- }8 K' K% ]# O3 o7 E0 V
- })3 x7 I, S0 s! ]: D6 c
- </script>
复制代码 : h' F+ U v! Q
' a8 D$ j- C8 @6 r, \7 i
在这里参数是监听的事件名。
+ T/ P Q% b0 e2 e; b |