Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">9 e2 B1 F2 M6 M0 [( C! G
- <p>{{ message }}</p>
% F! N4 P* J' T# F4 s - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
4 k' B7 m* w& t% n, V7 W - <div v-html="message"></div>3 j T: n5 }+ A: T
- </div>9 M3 Z- R6 m8 @
- ! [( e; d1 r. N9 e, |+ j
- <script>( w- y' T) F: I2 w- n, x8 R; L# \
- new Vue({0 c2 W0 Z6 f1 |) \4 Z- F0 L
- el: '#app',' O7 G! p- K# q2 G: G
- data: {2 l: l5 L- T( U$ u+ A4 \, y
- message: '<h1>菜鸟教程</h1>'
) Q7 R b$ b, A3 ^ - }
5 V5 ^- [4 B7 Q+ r8 p# D. T - })3 S* j; E% b( `
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
: {, O2 c ~) ], w' | - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
+ I. {8 x6 N w4 S9 Q/ V - <br><br>
2 }5 S: R/ `7 E9 o7 V - <div v-bind:class="{'class1': class1}">
: l# n! I; R5 [; [% f - directiva v-bind:class7 p/ H: N Q: W" K9 h) s
- </div>
+ U3 g3 G5 g, i8 _: T - </div>
, u j ~8 f5 L( @4 g1 p7 V0 _ -
. a; c; m% T4 e# \ - <script>4 B/ r" J' L( O
- new Vue({. E! U& C2 b) F$ R1 t; `
- el: '#app'," I! w; `5 F/ y5 a+ @' \
- data:{- W5 Z4 S* l5 U* v% G1 ^5 J) O1 r( u
- class1: false7 M9 K$ ?/ M+ B1 k1 d
- }
; u# P/ |8 z$ k - });2 f! m7 j( t- z/ R8 w H S
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">/ z8 `8 {+ A, E5 J4 E
- {{5+5}}<br>) m g4 Z5 c( C/ X6 [7 i3 [+ j$ |2 e
- {{ ok ? 'YES' : 'NO' }}<br>" v! q; [$ U3 V
- {{ message.split('').reverse().join('') }}9 h C) t, C) `8 n
- <div v-bind:id="'list-' + id">菜鸟教程</div>
6 @+ h8 P5 `7 _0 p! _3 r0 Y - </div>
' L8 C6 I. q# Y5 h/ H* ^" _! G - & L" w0 k# P$ r* d( u
- <script>
8 {- ~/ R+ n1 S1 ~ - new Vue({' `6 E! w; Y; J, s9 x4 H
- el: '#app',2 F1 K5 c8 q) U. x( R
- data: {6 X m2 x3 M$ s# G" f
- ok: true,- i& D& `6 `' g" E, J
- message: 'RUNOOB',! C/ c- m E4 S/ @6 N, A% w0 _# p
- id : 1
2 E8 D. E5 l! u - }
( G: O2 q/ s& O9 l3 F; O& f - })' H G' m+ v, I( S' R- J! K
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
6 l J2 [6 A; d: A% \4 h - <p v-if="seen">现在你看到我了</p>
( @- @1 O8 |) g& z% }; t7 a - </div>% e/ a5 I8 O! U) }
-
8 c0 K! l, K# z6 j1 z# M5 |4 ` - <script>
% Y" \5 j' T! Q0 X - new Vue({2 n% U. q* w5 q0 f
- el: '#app',
3 M( g: m1 d, S - data: {
( a8 {# Q5 ]/ ^( [+ | - seen: true
7 e) u! ^2 }( ]& i9 a- F8 k - }: A1 B+ l' s! {1 O6 r6 t5 q( D2 d
- })
7 }8 y' m; @* T w! S- P# E6 ?% \$ n - </script>
复制代码 ! O! N: @" } n: x2 A3 G1 [0 w
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">: R1 ?8 V" d: |( Q" [" m9 o- v$ {
- <pre><a v-bind:href="url">菜鸟教程</a></pre>/ Y% L; t0 |1 `$ z' ^- U# c$ j
- </div>: K. t! Y( W0 v' ?8 h! }6 \
- & G. \" u, I) L. _
- <script>/ L9 h6 v' b2 J- A' ~- f# Y8 V
- new Vue({. F5 p! H8 \ Y
- el: '#app',
! t' `6 b: z7 L1 R - data: {. y% d# F; C7 e4 C. C
- url: 'http://www.runoob.com'6 S' h4 ~) |) u4 |3 B5 }# G- ?
- }" P# B7 B2 D$ f7 J3 e, H
- })
( Y/ Z- ]6 l/ o9 k1 L - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码/ W% i) g$ z, o4 q; ^" t
- <div id="app">! T, L* o' @0 \- m
- <pre><a v-bind:href="url">Vue参数</a></pre>
1 n- c/ t! w7 s% Z. k
; x" ]8 Q$ O* V1 z" o2 C- </div>
1 ]. g! C; J' L6 K$ A - 6 M1 k$ X: v! q( R
- <div id="app2">: Q3 Y1 C/ ]6 J* c8 w
- <p v-for="val in arr">
, Y! I6 U9 a' ^' O9 O7 I M9 S) X, w" d - {{val.a}}
" \" c* r5 h3 b" `1 B) A' l - </p>- \5 ~2 P+ c) G! X6 _9 A
- <a v-on:click="tap">点我</a>7 ^; J& n# Y6 x i! H
- </div>6 H! @' ~; x7 Z& r4 ~5 L* L2 ^7 x* U
3 v: ?0 x" \9 I& [" |, R A- / C2 x8 p; G) Z. ^* _5 [
- <script>
) \( ~" }! b: B8 g" C B" Q - new Vue({' g- @! M4 Y5 e. Y& Q7 ]
- el: '#app',& x' {3 v' D4 k0 w6 s) V
- data: {9 p/ T5 ~+ @2 N1 ~2 p9 O- |* t
- url: 'http://www.cncml.com'! p2 w5 d4 }' ^: t! w% }
- }+ f6 h+ Z) W. G' p" k5 z+ O6 G; x
- })
) `. Q2 J* \5 ]) Z7 }4 ` - new Vue({
6 c& [* S, I' j3 u, }9 {3 ~, Y - el: '#app2',0 D4 f: d- \2 U6 U; W! O% Z
- data: {
5 F/ E: A/ X' s& _( X8 ?; { - arr:[
3 q1 \4 m8 c8 F9 H; c' R8 K$ A - {a:'bb'},2 [/ W" `' D M& z
- {a:'cc'}! ^2 {6 S7 N6 e
- ]
: z) }6 L$ U+ a7 H - },4 k) }4 ]$ r3 S% H) H t, U+ l
- methods:{$ T% W1 A" D; _$ c/ I; Z
- tap : function(){6 ^6 [8 ]9 D0 d! i# Y
- this.arr.unshift({a:'new'})
3 T2 y4 W. _8 W; N; U# u6 l - }
& Y/ D% w2 c( S0 x - }
$ y p( c* X( a; @5 n; Q - }) [- q; G- _& i5 h$ m, }
- </script>
复制代码 " Z5 Z) J! |# m0 c( ?, R0 Z {0 }
8 M5 o) f, @. _1 D8 u
在这里参数是监听的事件名。 6 j; r' G; P, c
|