Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">" x) s: o6 j+ @0 `
- <p>{{ message }}</p>
$ ?! j+ b/ D/ O: Z - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app"> a$ w; V! _1 ]" v$ o, y
- <div v-html="message"></div>5 F" j1 k! m' k/ D$ ]5 H
- </div>- |1 R N7 o; B! W8 u: U6 Q
- 0 [9 b9 T! W7 @4 W/ X
- <script>
4 X+ z! e# W% y; `- H/ U0 q; \; S% o - new Vue({: l' L/ W. C0 @6 E' t) |1 `
- el: '#app',7 ]- B" K! q1 N5 X" O8 }
- data: {) X, F: Z9 ^. F: p% z
- message: '<h1>菜鸟教程</h1>'
8 S+ R5 l, z# \+ z& G - }
% T) f! y* h3 I8 z3 n - })
$ \6 `! t R C - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">" ^! f# T9 u0 {) f. @9 f& Z% K
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
$ F' W1 R1 T/ s% \; T! W/ O w - <br><br>% p6 [' X$ T/ w
- <div v-bind:class="{'class1': class1}">3 ~/ X, f# I+ X0 t7 r' V1 C
- directiva v-bind:class
& d/ D n$ T7 d k0 U7 X - </div>
- b; @" I1 I! N, f* G - </div>
: {3 K. p i1 K9 I - $ e# j+ C7 r0 g/ t/ X3 }
- <script>' Z) L! C" T# [
- new Vue({
$ b/ o! b4 M. F+ M1 a8 R - el: '#app',# ? C5 w9 e+ P7 D0 l
- data:{8 R8 S1 d& E, S3 H
- class1: false) q) h% y4 }2 f- ]: [* d
- }
' M4 I$ W. U2 N) n' s ~: ]! D ^ - });
y7 D; ~4 s( x% T* M9 O - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
% ~% o/ I3 ^8 w* ^6 E' R( T - {{5+5}}<br>
/ R: }" F: u; \/ ^" v4 l0 A s - {{ ok ? 'YES' : 'NO' }}<br>7 C& e5 u, T- x5 ~3 Q. I3 H- I
- {{ message.split('').reverse().join('') }}
3 Y: ~+ h6 S& p' r7 p2 Z - <div v-bind:id="'list-' + id">菜鸟教程</div>
* ]3 q& j$ o8 n3 x' `' h - </div>
- \% C2 u, Y! A! \; H -
) O4 e0 q. m& S$ } - <script># c7 @ x- ^8 B8 H
- new Vue({5 f0 u$ x# M& O, t
- el: '#app',% u9 ]) u- {- H9 }- a" E$ x
- data: {
$ D" U" }2 p8 z" g8 X1 u! w+ ]" a - ok: true,
: [5 P7 ]+ r; S9 A4 z1 }) a - message: 'RUNOOB',2 V% R& ?6 P4 a0 P0 ?
- id : 1
: |: T5 w& Q7 h" [7 n% f6 X - }
* ~' c* h1 N5 S, W& h - })
. r. @' @8 T3 h3 J0 w6 D6 | - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
( e" q1 z. f/ D% N+ r - <p v-if="seen">现在你看到我了</p>
0 r9 u/ D2 y; p* S8 v - </div>
8 z3 s$ c0 d7 d# V" w - 6 j: J; T& d# k! s! J# ^2 u& H
- <script>
8 T8 ?9 d- M! I4 Z# I7 `: ` - new Vue({
, p2 A8 l$ p9 Z: v) c - el: '#app',' s# o$ [4 b; N
- data: {3 W* H5 {% g' C- `* v; [: p
- seen: true8 ~3 A# S3 j& A6 `6 r9 ^
- }
2 o J, C" M0 Y - })+ V, v% h0 ~! I0 J
- </script>
复制代码 I' c& e% a6 x
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
' P2 f. T/ W! ^( E7 Q" C6 } S! M# v& k - <pre><a v-bind:href="url">菜鸟教程</a></pre>
" I" q: Y9 } g( B& B% R - </div>/ A- |5 p |2 v# R; g
- " F: C* ^3 {9 i- W- a
- <script>" U3 j4 V% _* ~- A: Z! h9 K! K* z( V( ~
- new Vue({9 k' s" y, b# {+ f" I. K" _
- el: '#app',
# M9 |) e7 ^' l: S- j$ _ - data: {: {: |1 `6 T+ G- N1 | D9 |" G: ^
- url: 'http://www.runoob.com' B5 b& w9 ~6 f4 g4 T
- }% t$ D6 n' I0 {' |; @, q9 ? a
- }) D( Q' h* g: W* s& `4 {( Q- G
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码7 f9 j3 r5 ~7 U6 ?% |+ U
- <div id="app">
% \. b9 `# {! L0 \2 h0 @( w - <pre><a v-bind:href="url">Vue参数</a></pre>! D2 j% r7 O, l7 K$ p; }$ o
- - V2 I1 O7 X& Y, L( ?( S
- </div>
' D1 }+ o, u/ O; {3 \. G8 M
9 C& ^- H5 d/ s+ _0 E4 p- <div id="app2">
- s) X! x8 I" l0 _! `% _) u - <p v-for="val in arr">
6 q2 N) M" d$ m: Q( R) h# Q. U' u - {{val.a}}
& G! E7 k( o6 `+ z4 l1 @ - </p>
/ _0 T7 D; e x" I8 P8 x( _6 @ - <a v-on:click="tap">点我</a>% t, k; N! L) s5 h2 {* i$ o/ Z
- </div>* F4 c- ^* S6 G! r- ]
- ' Z/ q6 {4 O( s4 W p7 o+ o
- % S, W' ^* A8 I$ @1 j2 _2 u, t
- <script>2 A0 I3 h* a2 B8 }. C
- new Vue({% z9 z: ]5 T9 Q0 ~) W+ s5 f
- el: '#app',
- g6 s3 j/ m6 V$ ]+ Q b { - data: {8 R( h( D4 K: f0 r; t; ?
- url: 'http://www.cncml.com'
. j/ W' L2 c: d - }6 S7 O. X# b( Z7 L9 \' l0 {3 ^6 Q( F
- })
- G0 t( _( ~3 n$ A6 K5 W - new Vue({' o7 ?& Y2 e& I7 H7 r/ S
- el: '#app2',+ ~' e9 o( ?/ p* ]
- data: {
4 b; m6 v# \& m - arr:[) S6 ~2 f" C: W) R. B
- {a:'bb'},# {' M; P1 v5 T7 f, Q( U; c
- {a:'cc'}
9 f7 d! j: L- x, S% k/ w - ]
- j' Y! p* h* `4 h- ]4 z - },7 k. z' K/ X2 V- y, Q% g: j/ J
- methods:{
$ U0 \& a* h2 m2 @5 ? - tap : function(){
; ?- W! _1 {5 L& q: g: E% M - this.arr.unshift({a:'new'})
! R0 }! [! n, F5 g3 ^ - }
) @) J$ S! J6 I8 a% E( {; e0 c# A1 G - }# h9 @& {, K- S4 V
- })' _% p5 k6 X3 x- u! n
- </script>
复制代码
$ `7 w6 t- }+ a0 o8 [/ r
% O* a6 n: }: q3 |4 s( x
在这里参数是监听的事件名。 $ ^+ F6 [7 C' w
|