|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">7 R# {! c: }* i8 }" J) d- d \# P; v
- <p>{{ message }}</p>4 u1 M. p5 U- }, i( u
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
; f6 i* ^# V9 C; ?1 H# X! B - <div v-html="message"></div>
# l; ?2 o' t3 v8 ]9 V5 ? - </div>- Q- ]$ T0 c$ q% m5 B
- * t! P" c- i$ _& |3 C0 k
- <script>
8 M( \" u$ [& Q: A! b* }$ N1 b - new Vue({2 v! x9 x# U$ b: u6 Y& n+ E
- el: '#app',6 ^; C8 N7 \$ F. s! G
- data: {
% z5 a0 G4 I) y - message: '<h1>菜鸟教程</h1>'2 S% ?7 r! |6 k9 x. ~$ f M
- } T' m0 \) H3 {# o8 _
- })
2 x% u5 o* z! u/ Y - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
3 d1 h1 S- l1 n" C - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">3 m; n( }( c: r/ |
- <br><br>3 m) r& A& Y1 Y5 s# O2 \
- <div v-bind:class="{'class1': class1}">7 ^$ C# }+ s3 m
- directiva v-bind:class
/ ~# h5 m+ w3 z! j+ u - </div>7 V d! M) i& F, D; H9 J
- </div>
`0 F, }9 n; r0 E7 \ - & H. t$ w% [+ m' T, ?- R
- <script>
/ B# B0 E1 x' ] - new Vue({/ o$ s/ C `* i6 }
- el: '#app',
: V8 Q8 e' V0 _2 R - data:{
( H& p3 {" i) B; ^0 X5 w - class1: false
& N; e' e& n5 A. |+ r - }& m8 F/ i- [2 k* n
- });+ R9 L9 Y3 p2 x0 [
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
$ D' X4 y: O. F) u6 c, L5 p - {{5+5}}<br>
3 B8 e& y, `; o3 f - {{ ok ? 'YES' : 'NO' }}<br>2 [& I/ P, x% l- B/ [
- {{ message.split('').reverse().join('') }}
0 p7 _" Q4 g! s5 a - <div v-bind:id="'list-' + id">菜鸟教程</div>
0 U0 N" Q! \+ \$ E/ t - </div>% P! q" w' e) U% ^/ I+ ^/ o+ v% }
-
8 {' b& n# j( i0 v9 l/ ` - <script>% I0 g2 Q" A0 `" D% E& Q
- new Vue({8 f& p3 {0 z% N
- el: '#app',) y0 p/ T: ]' o# B
- data: {
5 U4 b+ S: s8 G4 y! s. _! [ - ok: true,4 _9 t3 M6 E, }- [! L7 Y
- message: 'RUNOOB',
' o$ r/ _" j! e- ` - id : 10 N5 n2 w7 c& @+ G$ S4 d: _/ [ U7 f# h
- }% m+ r5 |1 o, z4 ]( e
- })
. ~+ l% Y5 E) ~0 ]1 B: x - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">) F3 ~8 Y0 A5 i( g
- <p v-if="seen">现在你看到我了</p>
* G3 D: e' z5 j J# q" g( Z - </div>
@$ D! V/ G2 F/ ~, {+ S* x3 _ -
3 ]) Q9 c6 b. A& e& E" P7 X' s3 ?& C - <script>
' `& v3 s `! H1 ~ - new Vue({( S+ I- T% T! @6 M4 l: K
- el: '#app',
Q3 r8 `* }9 I) U - data: {
7 l7 J. M; w! h& X' x4 r - seen: true3 ^: Z/ p5 ^% x- `7 X/ q6 n3 t
- }
3 g( }5 ^8 V0 j, e - }). L9 l3 v6 F% ]1 u) y1 {( x
- </script>
复制代码
2 E! i1 M( t' W0 m: B4 n这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
1 m8 u+ v3 D4 f( c, ? - <pre><a v-bind:href="url">菜鸟教程</a></pre>9 b- s# u$ R, W9 W9 V" u
- </div>
9 E$ D0 _. T' X% o3 U: B# L -
: l, F J# S4 @6 ~1 }) m" \. @+ r - <script>
A: g8 H. Z* d. Z/ G2 | - new Vue({
( |9 @7 l) f: m" S6 ^' ?8 L. z - el: '#app',0 O" d4 E, N! Y% V% ?( @
- data: {, l/ b* P- L9 I# ~' ~* Y
- url: 'http://www.runoob.com'
. a: Q) S% N, \" \ - }) [- B* t0 \& |' p# l& v4 X
- })
/ O7 D- Z7 M8 a& l! [8 e - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码+ a0 M+ H% f- S7 Y
- <div id="app">
3 _7 ?9 X6 n9 l3 J7 z6 U7 A* Q - <pre><a v-bind:href="url">Vue参数</a></pre>$ q s* P! i; w3 o& V) ~ ~
2 N' P2 P+ e2 a, D& h- C1 z+ z. h4 z- </div>
5 X* O, J/ [ Y" T0 ^2 M" r6 U9 L
' k5 z% {6 j% y; {+ i5 H. J- <div id="app2">, b9 R. v$ j( X: P" G
- <p v-for="val in arr">: ^6 A; z1 |8 i9 |; j# ^
- {{val.a}}
( Q' Y* ?9 G; s" m+ x - </p>5 g8 w' e* m8 }( e
- <a v-on:click="tap">点我</a>
! k7 G% `7 R" R0 M - </div># Y# D# A) M4 t# d- X+ R8 h& [
- % ^$ T3 d1 ^3 j2 g4 G
- 1 B3 A1 w5 R4 R
- <script>
2 y. D @0 i" s! o. Z7 E - new Vue({
0 h0 _) z3 ^1 Y - el: '#app',
/ E+ p, d# n, D5 a# h, J - data: {
) T( w* H }% O6 ^7 E! i' @% d - url: 'http://www.cncml.com'- s3 S( g; k; x1 N1 R
- }+ }" \) B1 H# h% f0 w3 P7 Z" C, @; M7 {
- }): k; U5 m6 Z# K
- new Vue({
& V. P3 Q- ~+ ~( i: F8 G) ~ - el: '#app2',
. \/ V F* O% s" _/ c& a3 v - data: {
/ v! A% R' ?$ E! t2 g - arr:[
t1 Q- ^5 E- {# c3 E# | - {a:'bb'},
. M& k9 e5 t1 ^5 \ Q T* T - {a:'cc'}
* p5 z- `$ b' g/ Y# f - ]
% t3 s4 R6 P0 b/ v. j - }," g T0 o) D# q. S$ c2 O* k0 v
- methods:{/ \/ d" G# z- d( ~" _- q0 O* b
- tap : function(){" H. @/ d2 t; S+ m/ a7 L; w1 r
- this.arr.unshift({a:'new'})
' X" o8 p' u8 ?! p$ R* j& m3 q - }/ a! u) G1 B( c8 W3 s0 @
- }$ B! U: S% ?# Z6 H8 @, e9 I' @
- })
; _+ g! X6 O# \5 A - </script>
复制代码 ) `9 J% o5 b4 v, H& Q' v
0 u$ S/ M2 z' B! x; E+ n
在这里参数是监听的事件名。
" {4 p- `$ _; C; @; n: Q8 Q |