|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">+ ^& w- P, w7 H, M- a# Y; I* m, M* K
- <p>{{ message }}</p>' B! W' ?2 F! Y. W
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
. y( e1 |, G/ G; n5 e - <div v-html="message"></div>
0 J( R k0 {4 f' C - </div>& ^4 F, E) [1 q) Q
-
& I2 o, ^$ F0 u- U8 A - <script>
! j" b4 `% h$ `" e7 E - new Vue({
# t7 h* v, H( S - el: '#app',
2 I+ j. u4 S& K# o! q - data: {
3 t6 R. o/ I1 v, } - message: '<h1>菜鸟教程</h1>'
0 B$ @- o/ ^+ a! B% _7 ^3 _ - }
5 [6 S* F( c Q# y- Q. w9 F% o - })
. K2 l1 l- K/ Q3 D! x) G7 M - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">1 k- i' V$ f1 P+ r0 P: g
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
; G( C- w+ `3 J' o! Y! [' q! n - <br><br>9 d& h3 D# \! Y4 w
- <div v-bind:class="{'class1': class1}">
6 V0 M& n$ U5 `% e* p - directiva v-bind:class
$ N- O" ~" g, B' P c* ~# b - </div>
" w" g& P F1 P2 M3 Q6 U4 a - </div>. X1 m# B* j' V1 \" i0 x
- 5 m2 a/ t0 q& B9 M1 T/ l v/ u
- <script>
; }) L( X' I6 k" j& g - new Vue({# n c, d1 t! y- M- s
- el: '#app',
) J# t1 J% F5 r/ s# E - data:{
0 ~/ {1 X/ X' Y0 L( [ - class1: false
& ]# b7 ]9 d8 R$ d, y% w - }
, m, R N- l" ^3 u7 B9 j& @ - });
- p3 K6 _' {- v% z) O - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
& v/ ~1 c g$ R- x - {{5+5}}<br>: p _$ M+ D+ _' A h
- {{ ok ? 'YES' : 'NO' }}<br>
3 P/ L) q! V( r' @% O - {{ message.split('').reverse().join('') }}5 e9 e+ ~* d1 ?. D/ A; l
- <div v-bind:id="'list-' + id">菜鸟教程</div>/ x3 \+ ^6 k* ]6 p
- </div>
" _5 n% E' J$ E$ E- G# Q, {3 O% o - 4 c6 q7 }# v: ~* ~: k' _
- <script>
7 X% j7 B. y$ {, f - new Vue({
& ?' i% j% }6 o4 ?7 W& u - el: '#app',; E L# ^: d5 |. Z+ m) ]- l
- data: {
- R3 s0 J6 i* C5 \3 e - ok: true,3 J6 z/ c- M, z
- message: 'RUNOOB',) L, t' K" M/ I+ e) V! H0 M. X
- id : 1. g9 @& M9 l; P4 h- f
- }
- U: Q* d, y" m# | - })8 T( K: @! q. U" m
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">& e6 Q; T' U( `3 g( N6 L& ]/ _1 g% @' ~
- <p v-if="seen">现在你看到我了</p>
( W6 o8 a+ \6 I; l/ W4 q } - </div>
' [: H# J% ]" b6 @- E ~7 p - 6 g% |! \1 s+ s
- <script>
7 R/ K9 g7 M5 x' y' f* f - new Vue({
, b" }% a# `1 I7 ~+ X. u - el: '#app',# q& s0 d, H( `, ]7 r. t# u
- data: {
7 L* v+ F* U7 L3 C/ I - seen: true
/ G1 E. @9 Y. N - }
+ L. G4 k. k5 i5 s7 n# B - }): B3 v V. x- o. ]4 q
- </script>
复制代码
( J8 a$ p8 h: l) M# r这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
`! H+ b& }2 R" x - <pre><a v-bind:href="url">菜鸟教程</a></pre> F8 p* N8 [+ h" g. Y
- </div>
- ]2 `* f% r9 J& H2 l9 v - 4 [2 p9 e8 V# p8 [; G
- <script>) ^0 P6 Z7 ?5 Z% p* P3 v
- new Vue({
0 O8 o! @7 R- m9 Q( C! g( j - el: '#app',7 d& V6 C1 D) a: K- ]
- data: {8 l+ I- e1 }+ \
- url: 'http://www.runoob.com'* F, Q& \# y; |# [
- } @+ u' o2 c9 x. z0 h: e
- })
, Q% C- C1 U- @; B& ]. i' W: I - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
8 B' K% ^+ g9 x& ]6 O3 Y0 x6 j
- <div id="app">
- [7 W S2 u; b9 n- u - <pre><a v-bind:href="url">Vue参数</a></pre>
' A4 }+ @7 B/ R. e
7 s& p, a% t' `. t6 l1 N) \- </div>
: D! B1 S8 j; d8 S ` - , Y4 e' O O7 n; O
- <div id="app2">( s+ k+ Z! `/ R1 c4 u! Q: Y
- <p v-for="val in arr">
7 [( ~" U" }5 G9 q" x8 q+ s - {{val.a}}: {6 X" v0 q+ d! P! y+ g
- </p># H c; Y% K0 u1 o. F6 k
- <a v-on:click="tap">点我</a>/ Y5 ^2 B! K) i
- </div>5 p- a4 B7 ^! Y/ H- x+ @/ M/ h( K
- 6 h2 }( y" X2 k9 ^
- - L( v- s7 t; ]' o5 _" J
- <script>( y( W/ O5 b2 f3 W% p- f& @
- new Vue({' e) ], U$ r1 N6 f; W ^' _
- el: '#app',
/ w/ A" r6 S; a5 Y% R: u - data: {
L6 e% h% a( H6 E) y - url: 'http://www.cncml.com'
- K" H! J! L- X+ M8 y9 l - }/ g/ J: Y; f& o; q5 a4 K$ R
- })3 v! r/ N, K6 K2 U$ W9 c* |
- new Vue({
3 ?0 V1 f: g7 B$ C X q7 n2 z - el: '#app2',
3 h2 U" d6 z) }: }: e& g - data: {; i% n7 e2 f% D* b' a
- arr:[% F1 V1 X' |( W
- {a:'bb'},
* l& ?$ Y, V; g9 R3 F - {a:'cc'}
" m! s0 A9 R# @, j# f0 ]3 h - ]" A7 \- b8 p) C2 `. g. f6 ?4 F
- },
% `, j4 H; w+ S/ ^, V/ J - methods:{" x9 R( y( b' h% I6 V9 b0 ^9 q
- tap : function(){
" v e/ M" W5 D( J; @ - this.arr.unshift({a:'new'})
# h# d( M5 m4 g - }% P( y. z+ f, S& p+ o; |5 z `% ?( t
- }$ @) X% N! _# r3 S' }% a) g* y
- })% z$ d* b* ]5 E4 F# [" Q
- </script>
复制代码
& C; F, S6 t1 a3 ^2 a1 n
) y' I) g# [# ~5 S. t6 h9 n
在这里参数是监听的事件名。 / m+ ]1 i4 w X# |) R& m) h
|