|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
/ Q @# w9 b% p# Q: c4 I - <p>{{ message }}</p>( S. Y% T b' K3 H
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
+ p# E: E1 H" A# k1 D' J# V - <div v-html="message"></div>
$ [. d9 j' e& c0 N5 Z% l8 |* V - </div>2 E7 M! y @2 [4 N8 R1 J+ v2 H. c0 L# G6 h
- 5 z0 F5 I3 c2 Z
- <script>
' f: T0 Q. K {/ { e* E2 ^6 s - new Vue({+ ]9 l. p: N b( P! u7 r
- el: '#app',
; B1 O [7 W! D* j; X0 @% g0 y - data: {
- s `+ i+ x" F ]9 O4 N" o - message: '<h1>菜鸟教程</h1>'
Y2 A+ }9 W g# r0 [# b& I - }4 k( B+ r8 j, S8 \# N' a8 H. ]
- })( O B: E1 K$ y
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
& j0 W+ w" ?# w7 H; e4 i/ ]- c% V - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
* Y8 m* E* M% u! j# A: T - <br><br>+ _* g0 _/ y' q9 X7 X: t
- <div v-bind:class="{'class1': class1}">1 A. r0 a" j7 O1 ]
- directiva v-bind:class
' b: T5 Y f1 b- \/ g: u/ d7 c2 ` - </div>
9 z( n6 B9 M( ~' g# C7 F+ r7 j, W6 O - </div>
# l/ @4 c! U! _6 L -
. @4 x3 o2 x3 N: e: H5 K - <script>4 |/ V! H' B! d
- new Vue({
# V: R0 c5 j% z - el: '#app',% F3 p' x4 i) G8 M
- data:{
' ^: o; N# x2 a) }2 j - class1: false
' o" z" Z9 w+ l - }
8 }# E6 f ^; |6 ^" y# Q% i9 ^ - });
4 b1 L# Q& P) c! q: t9 {' z - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
0 X' g1 {/ a. k - {{5+5}}<br># e5 r4 ~ ]5 Y$ r9 }/ m6 V2 M1 ]
- {{ ok ? 'YES' : 'NO' }}<br>: G( h; b$ ? ^3 F C+ Y5 y
- {{ message.split('').reverse().join('') }}
! i, D% L. R; g$ I+ E f4 C - <div v-bind:id="'list-' + id">菜鸟教程</div>
2 v, n/ S1 u3 ^, o1 j$ y+ j) H - </div>9 V* G- [- G# c$ n; A x
- : S, B, P+ r9 p! c* j
- <script>& b8 i4 g3 t+ c
- new Vue({$ w: J% `! w5 U7 C8 b5 [2 p
- el: '#app',
7 e V8 v u* j3 h9 \) b9 |& I; x2 { - data: {: Q2 x, k( `! i8 p' ~
- ok: true,% @% @" O/ E7 M; }
- message: 'RUNOOB',
. H) C3 m4 I" e7 o* a - id : 1
3 Q: P; x& a+ Q - }
: t, q! W1 f( B$ x9 O/ F4 z - })$ v' d, P4 i( b
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">8 s1 H+ I! I$ y: X
- <p v-if="seen">现在你看到我了</p>6 S2 Z( Y7 J, ?" F& `5 F
- </div>
# M. B/ O; a8 l! h -
" R9 t6 P3 Q) M$ f1 {4 C% x - <script>0 u5 p- Y% n$ n ?* V& ^' D, P5 [
- new Vue({ N6 ?& x' w4 i7 L' f
- el: '#app',
7 k: W8 @" \* N E {, M7 E$ X - data: {$ p$ d+ ~9 P. a& R1 S( G
- seen: true( O+ L$ C' S7 `! K4 Z2 X
- }
" t/ K2 Y6 |( M! N; S" Z - })
6 s: w+ i: C: @1 a" v9 W" f# B - </script>
复制代码
1 l3 `+ l {4 Q- F3 P, V3 E这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app"># |. H& J& l; Y
- <pre><a v-bind:href="url">菜鸟教程</a></pre>7 g8 Y5 e2 p3 t) P; X5 Q- z3 J. a
- </div>1 | V8 @" y4 d; Y* j* ]& p
-
8 _+ h; k# K+ S - <script>' i' F6 I8 Z- S
- new Vue({
. P# A; x e- x0 K6 z. z# K% _ - el: '#app',
- R$ r1 }2 \* u - data: {) |) L+ Y5 c9 e: X6 O% q4 \3 D
- url: 'http://www.runoob.com'
, N% ?/ I2 p: N" m. h3 U - }
) A0 [$ o) g. w( _4 r2 n% Z6 u1 Y - })
' t) s0 B! |+ A* Y( W. L; F( Z4 L - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
" [' K7 [( e$ ?0 ~
- <div id="app">
3 s! I+ ?$ ~3 @. B& t) m) D - <pre><a v-bind:href="url">Vue参数</a></pre>
1 r# L1 h+ f s; E& v9 `* `0 t - 3 Z' ^3 \5 n9 ^
- </div>
) g0 `9 j9 C, O. ]3 ` h# \, O - 5 _& ]# E. { H6 o( j6 N
- <div id="app2">/ \% w6 a6 ?( s4 x
- <p v-for="val in arr">
1 B& @6 j4 a$ f2 B; m5 e$ E$ o - {{val.a}}( N/ C" u; c3 _! H1 ]+ H0 b/ F
- </p>& M, B0 K6 {0 [2 ^5 y8 M' m# @
- <a v-on:click="tap">点我</a>
+ I4 w/ b8 c. h3 o3 | - </div>
+ f! ^+ o2 k2 T$ m- L8 ^4 K - 2 K6 ^3 L4 Q. r4 ~; f
: m; z) r0 r V$ c; o( R/ |- <script>
" T. n! Z5 ^4 R6 B; @8 l - new Vue({" [& e0 ]; O8 p0 s+ r6 @
- el: '#app',9 P0 V& }1 @* x# \' f# y
- data: {
0 f/ K+ m+ i1 W/ v- y - url: 'http://www.cncml.com'
* b, ] u3 `+ m8 R - }
6 s A3 C9 _$ _& L - }). z9 [, F) g4 Q n
- new Vue({- O3 t+ A7 O- j
- el: '#app2',# D, d( M/ a# p6 }& J
- data: {% o+ J0 X- ~* \, p# j; Y' y
- arr:[, k/ S2 W$ m! X8 h/ X3 P/ d+ x
- {a:'bb'},. {* I% }: ]5 _( X7 M1 m; c
- {a:'cc'}
4 G- H6 p) z0 a7 d - ]4 Z* I) a) o# K
- },# _& |+ x( ` |4 d4 {
- methods:{% g. c4 t4 E- J8 X9 x7 d4 g5 l. h" Y) l
- tap : function(){/ h6 v! C6 @5 K8 M
- this.arr.unshift({a:'new'})
" i/ ^2 Q1 F, F: Z - }
4 v& y* X6 n, v- L3 a' n8 D - }
% w9 r0 N# i+ p& h! c6 l - }) v* F& K. Z& P7 p: x* D
- </script>
复制代码 ' [$ y$ O8 q y( o6 }
" i4 U {/ n3 k
在这里参数是监听的事件名。 3 E! k7 r/ P3 G e+ ~- e
|