Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
% r5 D7 ` O% _' i$ [ Q# e - <p>{{ message }}</p>) `( A! d' F/ m' n. M* a
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">8 S+ _; L8 M6 z. K5 ]1 Y$ z( N2 Y
- <div v-html="message"></div>2 Y6 j$ s7 u2 m7 n1 ]* @0 l
- </div>
2 J- N0 l; V. k$ p. A/ {9 ] -
$ w% v6 |/ U) R* \- `: R - <script># g$ r+ p! A1 K. o3 u
- new Vue({
0 M( q# I7 W, P - el: '#app',+ }2 N/ Y* X* f0 f5 I+ w7 s
- data: {9 e1 i* A' X" m# I0 l9 S$ T
- message: '<h1>菜鸟教程</h1>'
; S! |5 l3 P* ?/ E - }
* [1 k* e$ S* M# t0 a u - })
. x. @* V0 [% ` - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">/ M. D3 c8 f. R) _: Z. O P! }+ u
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">3 G6 A4 v4 G2 L7 K, k
- <br><br>
+ E* t8 U u9 ^9 n& K3 I - <div v-bind:class="{'class1': class1}">
0 `' L h ~' ^& d( S2 w* p - directiva v-bind:class* |6 A3 T: N2 G' f% V6 v1 e$ G! u; t! F
- </div>
/ Y+ E( h: W1 I7 Z - </div>0 Z& i- ]2 ? h4 U! j) N
- ( t7 ^3 b+ L" W6 m o5 m: c1 M) F
- <script>
$ C& j0 v+ Y7 Y: p - new Vue({
. U& c0 V& q6 [/ S - el: '#app',
; L+ i" r5 H8 I# X - data:{8 P0 _1 c% q5 t( R, S* w |' J
- class1: false* x. I* `3 H, q3 }0 v4 H) ?7 Q3 B6 }
- }) E2 D" ]+ D5 @ H1 Q v! l4 \
- });5 x4 m4 j+ v5 L/ Z1 @( P0 [5 b( D
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">0 O" W1 S- d8 R( J' Q S
- {{5+5}}<br>+ ]+ V3 D/ o4 U: `( W: { Q4 F
- {{ ok ? 'YES' : 'NO' }}<br>
; | d: ]- P5 E( u! Z n - {{ message.split('').reverse().join('') }}+ |" q0 k5 Y7 }. J8 Z& y
- <div v-bind:id="'list-' + id">菜鸟教程</div>
8 V0 E% C( S) G- d - </div>
3 u( p0 M( I0 E1 M, P; \0 A -
; s! x' W/ Y; R# T - <script>2 c& c. C9 H) N
- new Vue({
5 j/ \' d. U) q0 ~* j1 b - el: '#app',2 A/ n% p5 C1 a, t
- data: {3 T# W" S* [" d# V! f
- ok: true,
! P$ a0 F5 N9 k3 L# T - message: 'RUNOOB',
/ a. D; G3 C* N, K: P - id : 1
' N+ A$ F; Q, K1 i) n - }
9 R) |5 n* j, O; j - })8 q+ e4 s) d+ @* J' F& C
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
& O% S1 J6 A0 a, g' y - <p v-if="seen">现在你看到我了</p>
1 h+ J4 x% ^9 T9 W - </div>; M2 v/ d. G$ f( B9 R( z
-
* `0 p+ G W3 ^ - <script>( N1 m$ G+ D. ?+ C
- new Vue({7 i1 T8 _' A' @) D, h( a3 D
- el: '#app',/ U& I! g8 Z4 ^) a
- data: {
! b; x5 v ~3 x; q; m1 l - seen: true
0 |( Z8 q% q' I4 G! i: c# z' e) J3 O - }5 E" j% v3 J0 L, y4 j* X- R$ W* m
- })
9 c" J* \3 [% Q$ M2 s - </script>
复制代码
, w0 e2 N7 D. ?6 |, `这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
( i6 C4 f7 e' j' Q/ `6 V - <pre><a v-bind:href="url">菜鸟教程</a></pre>% V! \7 y$ N4 r% U/ O0 D
- </div>" Z) [& b$ X) @, A: e
- . B/ O5 @( ?7 W9 J# K# A! M# r
- <script>
- F; n' _) S' P9 p7 V% k [+ ~* Y2 C - new Vue({
" O! R# y9 h) X. R0 {: ~/ g/ O - el: '#app',8 F8 E) m2 f; z/ ?
- data: {& N2 ^* d% S" k! z$ O
- url: 'http://www.runoob.com'
7 a* L# S! H+ H& A7 ]8 t - }; j. F0 M0 G. M3 H: u. M, u
- })7 p X# b2 r6 P$ {7 M' o6 X
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码( m" y/ W4 Y! k/ d4 ~" S
- <div id="app">
9 C$ U% t! j/ B$ o - <pre><a v-bind:href="url">Vue参数</a></pre>+ }8 J4 X7 B, Q- a
9 C6 X: |' l4 F) U, c5 \- </div>
. [1 [7 F5 N+ L. n
/ s8 v$ [3 Z3 f( L8 ?- <div id="app2">* l6 y& W+ U8 K
- <p v-for="val in arr">8 i6 @4 h( B8 ^5 i% h8 M
- {{val.a}}
& F4 Q7 b3 d/ w# r - </p>
. b- [5 }7 C( }4 f3 l$ X& v, D - <a v-on:click="tap">点我</a>
( E( i! U6 Y# e: F5 b: ?3 P: n - </div># q$ X$ ] _+ Z- F! A
- : h: @* H( d m2 Y: h
1 O4 L9 B l: C; }* t$ w- <script>
& l3 [2 ]; A0 j! j" L - new Vue({8 d* H; O, Y( \+ S5 i- R
- el: '#app',
% s3 j6 F# v7 `+ T9 J# Q - data: {9 d2 ?5 N ^; d
- url: 'http://www.cncml.com'$ }- ]9 d/ V3 K1 C+ E
- }" ^8 ]: N5 r: {" ^" R+ l
- })7 K3 J3 |5 X8 D4 C; }, ~- B& }: F+ i5 @
- new Vue({
9 j) v$ ^9 B0 p0 G - el: '#app2',7 t. F. O5 h. Z# `2 O
- data: {1 x) ^3 s& a' K, c) U4 G% r& I
- arr:[
0 a Z2 B, H3 o* v - {a:'bb'},
2 a! D: z# E5 O2 K. d - {a:'cc'}
* B# _" E$ C0 |! n% l0 K1 y - ]* k7 W. W+ W, c5 ]5 h J, A
- }, f7 ?8 j1 v4 W3 N' G, [& M
- methods:{
8 x- s9 q8 Z: H- {3 ?2 e& V* F - tap : function(){! u: O1 n8 J7 D: l6 b7 l
- this.arr.unshift({a:'new'})$ H2 b; J/ \ E. b4 @% ?( \
- }
2 M6 M0 m. i3 T+ C - }5 O* R+ A: \! w6 F: ^
- })7 P( g6 [( G5 Q8 s, e
- </script>
复制代码 / G C9 i; m ?6 b
& K4 A1 R+ i$ ~# f% {
在这里参数是监听的事件名。
- ^7 J# K8 V T3 K' a |