|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
4 o X$ \ Q! X& t - <p>{{ message }}</p>- y; T1 Q' p( J6 W$ S' v, G
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
7 k: W7 B& L) V. p. [ - <div v-html="message"></div>
9 _: ?! O% `' { - </div>
) t/ f+ q& l0 d% D+ J -
! N3 Z# A9 x r8 M9 A - <script>
. j6 i$ r7 A- r+ a - new Vue({
+ r6 t0 y" D6 Z& ? - el: '#app',
* I' ?8 G! t. Y6 A) B4 ^0 Y8 } - data: {
5 Z2 J6 \9 w# ^; e9 ~2 O' P - message: '<h1>菜鸟教程</h1>'
% ~; Z3 S4 J& h& F/ o# n) b" w - }
1 ?, }5 f0 u$ Y# c/ S, U - })- ?: [' _, b2 `! f
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
- z0 |5 _* x3 V* ]: I k9 m - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">6 K& r- [2 `$ p' J$ v
- <br><br>
. ~% r* M; r6 ~6 E7 H - <div v-bind:class="{'class1': class1}"> [1 G# ]' u/ T S5 a( K; f
- directiva v-bind:class
8 W4 Q0 w. f# R1 s1 s9 x* N - </div>
+ w0 S. ]) ]3 a$ ~( f - </div>
+ t+ \- M6 s; a3 p! }, {* G( ?2 ~ - : f: o2 Q5 R, i6 I8 d
- <script>
u9 u* N- g6 m* l - new Vue({
' E8 m0 `! X6 l! t - el: '#app',
5 C' Y- Y- _5 t7 u% K+ w1 W8 a: L - data:{6 Y% Q1 E& r# j8 j) N o0 o. j$ R
- class1: false" P' _) w% ?2 j
- }3 V2 s3 U v6 u# w
- });
. X- p& Y: ?8 e1 q0 D3 w1 v7 D" w7 ? - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">' I5 W8 Q/ v, C& p
- {{5+5}}<br>$ E6 y8 ]" x3 l
- {{ ok ? 'YES' : 'NO' }}<br>
; ]3 ~( A8 S! l$ h% i9 m - {{ message.split('').reverse().join('') }}
/ ^& o i) u2 X+ J3 G - <div v-bind:id="'list-' + id">菜鸟教程</div>8 P+ i0 |6 h, G
- </div>
( [& P" J+ X5 c: i0 F% W -
! _, Z' ~( n, P Z" L' @ - <script>, ~+ \8 {+ Q; H
- new Vue({
; ^$ \4 Y% j% R, j - el: '#app',
& N8 I. z& s3 E; ?! V - data: {
/ }) P0 c4 i) W$ q$ l: Q l9 z - ok: true,' ]$ u- {9 T5 k
- message: 'RUNOOB',3 r- g2 a. N- }0 [
- id : 1
2 j( o9 r* r( K$ b, S9 { - }6 p( L6 V5 W) V
- })0 S2 J8 u5 {& R' y5 @
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
5 o" b, z: k5 n4 w* |! ?. Q" L - <p v-if="seen">现在你看到我了</p>* W# z: s3 A; }# l! w* d @- s( L
- </div>
1 Y: a( s, [; t5 }, b9 Z9 D- h - , d; k! m: F$ s+ ~5 Q/ ]% S% r
- <script>
! }; ~/ Q3 }1 o1 T X+ V - new Vue({
; g% _) @: j$ `5 H- r' b! X U6 k - el: '#app',
9 W4 K+ i8 X5 h( A3 j - data: {
* }$ h: ?& m! S9 F% U - seen: true& L, L. z- A/ G4 d) E, L& |8 e
- }+ H7 j3 A( r1 w6 i
- })* i) V1 n& c% |4 x5 S1 Q* X, T. g
- </script>
复制代码 , R* h7 I- M+ d" h8 l* X, [, \# n
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">! O3 Y+ m7 C8 c- u7 J" W. O3 g2 b. a
- <pre><a v-bind:href="url">菜鸟教程</a></pre>8 j$ _& A: S" ~& A( L p* n( D
- </div>
+ l- K" q, G0 w4 ?! r -
& Y5 P( @/ Q7 b T L - <script>
6 `' P: M6 u, g% z7 x5 b) T/ M - new Vue({ H8 j) V1 M9 {! w" Q( H4 g6 z& Y4 R
- el: '#app',8 ^! x1 Y3 q8 F4 X: x( _$ f+ {* i
- data: {
* q8 ?) i4 d$ w* X3 H - url: 'http://www.runoob.com'& T# n- g/ b3 \5 S$ i' l
- }
6 o( K) V. a( f. W. b o$ J - })1 S \ a5 Z- [8 M
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
8 n: p; s$ \/ n8 m! I' z
- <div id="app">
; s l1 U: A4 L" j$ I - <pre><a v-bind:href="url">Vue参数</a></pre>
7 d0 P0 T- [3 ~. ^2 p" T2 F/ |0 b
- L9 J! {9 p/ f. A1 C8 p( d- </div>
2 W* P# ^6 Y/ v6 G+ F" e - * ?( n1 j9 l: x# r4 i" i* S# ?
- <div id="app2">/ u/ h8 M% T" h+ r; ^6 x# u
- <p v-for="val in arr">1 P$ J1 a' h4 s: l: B% L6 Q/ V
- {{val.a}}
6 _/ Y L" e; J2 d - </p>5 {) }$ v) ?$ f( y2 j
- <a v-on:click="tap">点我</a>! z2 q; |( W" S% ^/ C' k2 }* X
- </div>7 Z* P( }' O1 \5 m4 b5 ^! l; H
6 [+ k- i$ p* R' _& \1 w* ]$ u- / ~$ \6 M% X R( {6 M) S
- <script># i8 k+ t- z, }# j, Z
- new Vue({# r; z) ]7 P; h+ Y6 d+ Z
- el: '#app',
. l& c2 Z1 R* u - data: {5 H3 V0 ~; u$ w9 p: v% Z1 j
- url: 'http://www.cncml.com'5 L" v* t, m7 h: g
- }
; f+ g- M8 I. N( @ - })
4 a! a: W* O5 F - new Vue({
/ n V6 R6 W7 Y" I# h1 c. s - el: '#app2',* P# _- {9 w& C2 F6 ~8 H5 E
- data: {& u4 D% H8 M, f4 w+ x+ w9 X
- arr:[
+ S- x7 A1 t+ B - {a:'bb'},; D; R5 k& e6 D& h
- {a:'cc'}; D! J+ c) F7 v$ A
- ]5 B' H+ i; N, Y$ b- m' Y2 L
- },- K& q6 I3 B7 ?, }$ _1 n
- methods:{7 r: D- [: h8 R3 a3 g7 Q% V1 s1 j" ~; d) L
- tap : function(){) B$ s/ ^1 y. Q$ |1 l( R5 ^7 O/ N
- this.arr.unshift({a:'new'})1 F1 l9 |$ \9 ^2 s5 g
- }
- y: b. U$ ?2 j2 j6 b) L7 j+ T4 E* g - }) z% k; ]$ i3 L: G
- })5 r8 c/ x9 [) R4 f; d( Q
- </script>
复制代码
) h' y0 [6 u; i6 H$ m3 f' F3 `+ e' P8 x4 Z3 L+ ^
在这里参数是监听的事件名。
3 r1 E( {& ^7 h1 G- X |