Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
( Q9 c; } p& K. q* {, s - <p>{{ message }}</p>' x2 L+ A* Q2 f1 g. n. }1 Q
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">, Q. X6 \) @% P7 ^5 _% h6 J$ U. k
- <div v-html="message"></div>: b+ K' Y8 u/ O( Y9 @
- </div>4 q7 ^4 J; G3 r0 a$ s2 o2 |1 k7 B
- ; @: f! s0 |3 n/ I) Q
- <script>4 }7 y J7 s6 e8 z. A6 O
- new Vue({ ?& E+ ?" [0 z8 g, E, \3 E
- el: '#app',$ @ K0 ?0 [4 O( D" G
- data: {7 a' i! }5 m* l# Q$ o
- message: '<h1>菜鸟教程</h1>'
: g8 E. W4 o7 W/ h) L2 c - }& a [4 a0 K* U& c# [; D. w
- })' J* c, F. K2 h* ^% { p+ ?
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">& c, a4 s( T. ]& L) _* G0 {0 R
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
/ _1 {4 h: O3 J3 E - <br><br>, P% f( J7 B) @' k3 X8 H
- <div v-bind:class="{'class1': class1}">: r2 j5 e. C+ B5 f2 m1 ~) v0 d
- directiva v-bind:class$ K. A$ @ ]; p) Z5 K
- </div>) q# C o, }& t" T
- </div>/ a6 ?, x" u7 w* s& t- ^! Z# y
- ! r1 m, u0 s& r- ~. P; h7 h+ F
- <script>: M' |7 O% d' f8 T; O
- new Vue({4 j3 y7 z* w0 v
- el: '#app',
7 ?3 C4 l8 i# A5 a- p' Q - data:{2 r8 ]+ f3 x. t7 s$ L+ s/ [! ~* |
- class1: false( s0 [) x% L) M0 `
- }' K- j/ s0 D& O! I
- });5 U5 D( s. t! K a8 v( X8 c+ i& q
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">3 w, E) O* j4 s4 G
- {{5+5}}<br>, T4 m9 \7 C5 F
- {{ ok ? 'YES' : 'NO' }}<br>7 @- Q4 i2 ~8 r; R+ I/ x& t I9 P
- {{ message.split('').reverse().join('') }}# U7 S H4 r( S
- <div v-bind:id="'list-' + id">菜鸟教程</div>
3 A( u; y! R# t$ |0 e' r - </div>
! K$ p4 k- E0 D+ D -
& [. Q; Q# i1 E L. c5 D - <script>* ?3 s2 \9 a8 O0 G
- new Vue({. G0 ~$ E$ S+ D$ T$ S0 d9 |& K
- el: '#app',. H* h! e! J' k) @8 b6 a9 s% S
- data: {
$ d' P; Q% s* H4 {4 D+ ? T - ok: true,
& x D* J3 ^& P5 F+ j: X - message: 'RUNOOB',* c& q( j1 j6 M* h
- id : 1
! E) Q5 r2 S0 i& z9 }* t - }
2 `6 D6 C0 E. g& Y; z- C ~3 M. j - }): M7 Z) D- \; i, N1 \, [- G
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app"> k, ~* i5 X* {- j7 a I
- <p v-if="seen">现在你看到我了</p>
" u! H) ^ \7 q5 g - </div>% v( R1 Z0 b: K0 y6 j, }
-
( l5 B7 j9 `3 {% x' I7 b5 C- g. }- C - <script>; G# _/ o; q( W; L: C$ e
- new Vue({
6 C5 y* N$ g' Y - el: '#app',
2 k/ `) d' R: A7 j/ e& t' [' c - data: {
( Y4 y7 S( s% ~9 N! X - seen: true0 y5 E, ?/ ^$ t8 L
- }& e5 ^8 p( n; l. Y; Z+ ?) e
- })
- X3 j- l3 a9 g4 i4 t1 O% ` - </script>
复制代码
8 O3 J3 P1 g% `5 f& R2 ~9 C4 S7 ?这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app"> J: j. ~: D+ ~: L- W3 G
- <pre><a v-bind:href="url">菜鸟教程</a></pre>! t% A* E! y, u6 Q: \, w
- </div>
2 c4 ?+ u" U$ d7 D" P - / G9 }( U) h; m O. U# p
- <script>1 V! P# @4 F# a3 H
- new Vue({" e$ ?+ E! s8 w' d
- el: '#app',, m L! ~5 g9 S; x5 h
- data: {: V! @% W" ? F- P @
- url: 'http://www.runoob.com'8 D, X+ D5 d4 d9 l
- }! d5 s6 W9 u D' s m1 o( [, v9 x7 I
- })
+ N9 J) ?8 ~. i0 H& Y" x6 b* G7 M - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
2 I4 m) }" m! V1 h/ @4 l
- <div id="app">: X7 z: O* o7 W5 p6 s. t) f' F' B' }5 E
- <pre><a v-bind:href="url">Vue参数</a></pre>
. v( m9 U. i( `% G( W( g- l8 i
% r4 O5 A: h3 H- y- </div>3 V, T- I7 J5 {- t3 S: I
- 1 V8 N. Z3 C9 G m, J, B; @
- <div id="app2">
! p7 c; ]9 B$ U - <p v-for="val in arr">, G4 |; G5 C/ E- A1 G. l6 u
- {{val.a}}7 Q- ~1 t: y, v/ F5 e. |; z
- </p>
9 k% I: a; x( N" | - <a v-on:click="tap">点我</a>) L$ j5 F3 E1 D' P$ u# j- \& {8 B
- </div>
5 T, h! M8 O: ~+ S6 O1 O2 M" a - " R8 R, F4 G/ C; D( x5 p+ p
/ b. r! O( A8 ]6 w7 M; L0 |- <script>* }/ \, n# E2 i% t( M: r
- new Vue({
; V/ K1 R# T( V" M- U2 \4 J - el: '#app',
! `$ A& b! |5 E - data: {
3 L) b& X4 X4 Q, ]0 S' P% V - url: 'http://www.cncml.com'
4 @; u3 ^5 b/ \! o% q) V' p6 E - }
0 y- H9 |3 Y' j, @" W - })
7 ?% H$ B* L9 q. z - new Vue({; I E' \) S2 b. Z5 M6 x% S" k
- el: '#app2',# b5 Q! d6 w8 Y% U; B
- data: {
. Q, ?& X! g8 x) j; W7 T - arr:[
- o; U2 N# l! F& Z& E" F+ m( a - {a:'bb'},' | j. z7 M7 N
- {a:'cc'}
0 s! p3 ~& k1 @$ F+ C0 o; Q2 H4 R( Y - ]
& B8 s3 F! O& a! o! b - },
8 x0 p; n& x* r& q$ H4 H, s5 L; T: Q - methods:{, m# _7 I# \ H: {# e X1 o$ Y
- tap : function(){
+ a" z% a! Y& Y) O: [2 v/ h6 K- { - this.arr.unshift({a:'new'})9 f& G" S3 R& b2 O& M2 {
- }
# ?8 o/ e+ G8 v7 Y. y$ g - }8 @( L7 G. ?: u, C! ?; f) m
- })
5 G1 M- D: i" r7 M, v - </script>
复制代码 1 b$ h) o+ m8 L9 G
h1 x3 s# o3 P; A
在这里参数是监听的事件名。 ]( Q5 e: {7 k
|