|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">6 H6 C/ y+ x8 T' C# |
- <p>{{ message }}</p>
$ m! Q2 w% l2 b - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">9 Y4 V5 M1 S$ K& J3 U
- <div v-html="message"></div>
) A1 i8 y4 T3 y N+ v% k - </div> y8 k0 E9 h! c$ k# x" ~
-
& I. x2 c$ S% Q2 M, y5 M& W - <script>) [8 n0 [% \# u6 h' J
- new Vue({$ B/ |& X& B4 S n3 c4 v2 k
- el: '#app',
4 ] i/ r3 z4 { - data: {0 F3 l6 b/ {5 h. Z
- message: '<h1>菜鸟教程</h1>'
" g+ j0 U! b. l7 P. j2 ` - }
. I ]7 h5 Q" g, W: c) H5 x$ X - })
" _6 ^/ ^2 s$ D( C - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">( K5 ~2 B" e' V1 G- M8 Z t/ ~
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
, p+ `4 [* o4 s# A4 }; N# Y - <br><br>
) G& z* t" K- z- V3 F, u2 O - <div v-bind:class="{'class1': class1}">6 I9 F# m# R4 ^( ^! o
- directiva v-bind:class1 l: _3 A( h! `9 a. c/ S, l3 W
- </div>
. J( ? h! n! i" l% L- _ - </div>3 f2 n" Y2 C& o q# Y
-
" S. |/ O" j# Y7 L - <script>6 S2 c9 O' E: t% Y* I. h" i, H
- new Vue({
; E* G2 D) m5 O1 i/ j$ a+ `5 ^$ x5 S% a - el: '#app',+ V; L1 n& v3 P; o9 M) H
- data:{
# Q3 J" W) ], c! l' z/ Y - class1: false5 w" j% \$ I3 x2 c7 z
- }
& j/ Y' g3 ^) o# k) N - });
: j3 J. v/ V# u- o0 ]. R - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
0 N! R$ ]2 S: Z$ p- T - {{5+5}}<br>
& V( w; f$ I+ O$ I2 { - {{ ok ? 'YES' : 'NO' }}<br>
/ J' X* j/ A% g& a0 |* K/ v - {{ message.split('').reverse().join('') }}
0 I. G0 q( p8 i3 p. O- { - <div v-bind:id="'list-' + id">菜鸟教程</div>
$ b% Y7 y( v$ L }+ _, S3 H& B - </div>7 e6 F2 U# I9 Y4 ]/ a b
-
3 b4 A$ j K( e( P- P - <script>6 @' \3 a9 m$ {3 t" f. J) E
- new Vue({
6 v+ Q0 X* I- z! D1 t' s - el: '#app',: e/ e8 Y" e8 A2 |6 C5 |* e5 B
- data: {' f0 |/ a( G6 p& Q5 }5 {2 T) }
- ok: true,) T& B3 d6 g& R) R1 H
- message: 'RUNOOB',
. O4 w4 O9 ~7 R1 j; a - id : 16 q9 N) E$ u, C0 {( }" q
- } x8 e9 c. E+ R4 Y2 @" I
- })
# H" [! e! F4 v% C* w - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">% Y+ A0 \5 k9 v; t7 V6 G: r
- <p v-if="seen">现在你看到我了</p>
$ q$ i& Z4 Y3 v& x o - </div>. G0 w2 N8 N! M: M C
-
* F' V# S* E0 ~% S8 e+ O - <script>
2 A' h0 ]% Y; J5 c3 R - new Vue({ u! b" ^9 N1 g8 x
- el: '#app',
$ b% f6 d& L/ L- u* w% J0 c6 I - data: {
0 L/ ?. S) T, C6 @) P% Q( i - seen: true
; f8 o/ _% t7 x - }
- I C9 Z3 ^9 \/ {1 B. }& J, P) [ - })
) G o4 w9 R0 x" p% ~" Q5 Y# v - </script>
复制代码 * W# [$ z+ ?* I% _' O5 \1 ^2 W
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">, C3 F r+ b; C; U
- <pre><a v-bind:href="url">菜鸟教程</a></pre>4 U8 Z$ h1 o8 j m# R& T
- </div>/ T+ j5 \- f8 J, x4 l2 O0 G( Q
-
7 ~, k/ \7 v5 R" m) r; ] - <script>
2 M& S3 H. H" I, @ - new Vue({
) e4 j. n. K+ y( s% k - el: '#app',
3 M$ f) ^# O: `9 K- ] - data: {) A6 U- [; ~: W0 ]! i$ j
- url: 'http://www.runoob.com'
- @4 B# H3 |9 B, L - }$ W1 b3 V0 m; l2 ~% w
- })# w: p" P2 L! `2 t, z
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码5 w. o$ @2 z8 K9 @7 A
- <div id="app">
! m3 v3 h+ {% ^/ {& Q" z - <pre><a v-bind:href="url">Vue参数</a></pre>
v% @! H0 g M+ @7 a0 q - 3 z4 w( E' d+ S9 ?+ I. k+ A6 [
- </div>
( q5 @8 Q, \) Z7 j; [4 y" {
. V) n. ^5 V, V' H. g1 k6 Q- <div id="app2">
2 x) C* d% K" a# t2 \: T - <p v-for="val in arr">+ b3 h$ L/ f/ R
- {{val.a}}2 k( _6 a8 o% Z5 @7 {7 X' E
- </p>4 Q- m3 U b5 s* L2 M3 ?
- <a v-on:click="tap">点我</a>
4 k1 l3 D% r0 V- P. Y' {4 [# k: P" `3 m - </div>
& g( ?7 V) @) ^8 @3 j; D - # i8 N* [% X0 a/ P1 ~2 \7 b
- 6 _& c2 Z' C |' }* K( G, C
- <script>
; X6 H; ^6 ]$ ]% _5 e - new Vue({/ [. i/ e X6 |' U
- el: '#app',; Y9 j( o. C7 k+ a- p
- data: { b- X1 k$ s0 z
- url: 'http://www.cncml.com'
& Z1 {) s. a! a+ E - } p& R g( r7 ?) Q- M% g
- })
* a7 f' r; u! q* x) T1 u - new Vue({
7 @; a& E, y0 }" L - el: '#app2',4 c. J9 R; q4 C$ C+ k
- data: {( q' l! ~/ }2 A( }
- arr:[
- A$ v, c: h. G1 j! E( N5 Y - {a:'bb'},) w1 ]: x# F4 F" g$ }0 h
- {a:'cc'}
7 t, d$ y4 J. W- Q9 e - ]
% [7 f o. { f! I! z" r - },0 \2 v5 s( a& V0 r! {1 L
- methods:{
& C& T# w+ U# U6 l - tap : function(){
& a+ h( m* b+ H* u4 F" s - this.arr.unshift({a:'new'})
' N3 }' S! S% g: s - }( B2 T% X/ I. V6 q
- }. y4 h2 v6 F( n' p
- })
# Z- P7 q3 q+ t3 U' F& j9 s - </script>
复制代码 5 K+ [# E! e# A) d
0 e- O! q! R7 u+ w7 |$ s3 N
在这里参数是监听的事件名。
8 h+ _2 Y2 s; H/ Q2 b Z3 }) M |