|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">& i! V0 v4 o( L( v e: W4 P
- <p>{{ message }}</p>
5 A( q! i: e% K; x) \( y! ? - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
- q1 p7 @) {- ]6 b" Q) T - <div v-html="message"></div>
9 l+ z+ I) ]& M0 n6 | - </div>) `2 O" v. T& L8 {! \8 N2 }
- 0 X$ G8 G+ j: s; D: C
- <script>
: ~# q1 N6 W: Y1 F6 ]$ @3 @" x, A - new Vue({8 j) \# E! E K/ C6 w/ g
- el: '#app'," J3 ~, k+ U, e1 W# M6 W
- data: {( I/ s) s6 Q: x. A% m
- message: '<h1>菜鸟教程</h1>'
' v: u, N, b8 a* @# J* f - }
5 f# w; l8 b* Y @ - })
( J* ^0 J. j ^& ~* ~ P - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">, L! A, U) l" n0 [! H
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
' ?$ V6 D" k& ?/ o - <br><br>
. D3 p& c5 U/ v- d$ @ - <div v-bind:class="{'class1': class1}">' @5 z8 k! x E. f( `( c/ h
- directiva v-bind:class
4 r! z" g: e0 D) I% D: | - </div>
. n. H' A: ]- b3 X- Y5 V. h5 l. Q. t - </div>
7 o9 Y# ^7 ?. X -
# X; w0 `! X% K - <script>: p% d! {& ^. a: n* T: g
- new Vue({
`) G3 O+ X% h$ [/ r; l/ j; R - el: '#app',5 [4 K9 c6 n) A
- data:{
8 d; C- E D: F1 f - class1: false$ [5 U# [- m# r! G' b( F
- }% c, e) }, T% f- `
- });
* I! E0 d# `& E% C+ p+ T - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">+ }8 L9 v6 D( ?$ U3 r) d/ J# g2 z
- {{5+5}}<br>
# K' y& s8 t, u* {/ S5 n - {{ ok ? 'YES' : 'NO' }}<br>
- v6 B" Q5 l8 H - {{ message.split('').reverse().join('') }}" v# l8 Q A5 v: I" j. g
- <div v-bind:id="'list-' + id">菜鸟教程</div>! S6 ?8 G2 \1 i ^6 t
- </div>
3 L" K. a; L' y4 O% A$ R -
r C! ~, [2 Y# `, G% ^3 Z4 ? - <script>* J+ U1 ]! O9 i: s
- new Vue({* L, E( f) S& J5 ~) f s! U/ Q* l* M
- el: '#app',% s4 c. T+ e1 D& s# ]8 n) s
- data: {
( v, L# b3 l' s$ e$ j1 o- P- x9 T - ok: true,
; k( c: W5 ^+ Y5 A+ G2 b - message: 'RUNOOB',! p+ v& l3 b2 w; e. d
- id : 1 F$ B4 m( I) h1 r' X
- }
. o L- K" r8 I' ?7 ` - })8 w8 m5 X! j/ p, ]
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">% T" l& Z; T% m. v/ o
- <p v-if="seen">现在你看到我了</p>( v' ?( e8 P1 s) ~( p) c1 N. X
- </div>! C) h$ C/ q8 u7 Y2 X$ w
-
8 w% c Z! n2 ^* i - <script>) s1 V* X/ D2 Y
- new Vue({' d1 m) F; M1 j. B: n
- el: '#app',
- |; @8 {$ ^% [# I9 p - data: {
! m2 O, {! F) Q" h6 V - seen: true
: Q* @) {) p0 W2 ] - }. `' O( K. @4 o1 `. p6 }: k9 z
- })
9 E1 `. a% G! J Q4 }! B0 U* g% B. W - </script>
复制代码
& E4 A2 a/ Z3 n. k2 ^这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">; f* B1 E {& Z1 |" d- v
- <pre><a v-bind:href="url">菜鸟教程</a></pre>
6 Q% ^, \. V8 J. ?4 p! N" t - </div>
. @3 A+ c2 {7 \! D8 R -
+ P+ j5 K, P7 k; l - <script>
4 v# n: M( s1 K# i0 B - new Vue({
5 P3 j. H& o& `/ C% o: G - el: '#app',
, `& |1 I" ^, B* X( p - data: {
4 E' l, E; z# x) | - url: 'http://www.runoob.com') Z5 L8 c* z* ~" C! P
- }
3 K, S7 c0 g; y0 n5 y3 u - })
# h. w+ ~& w* n) W2 J/ X, } t - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
. t/ k% ]3 b+ S% }1 A
- <div id="app">
, W8 N& ]* J# C* M# q - <pre><a v-bind:href="url">Vue参数</a></pre>7 x' v2 W/ [+ q% e0 C
- ! O0 u! H6 U. P
- </div>) a* W0 v" _# ^: P$ E0 G: k
- # U& V7 |4 z1 {7 U2 W! a% v
- <div id="app2">
3 ~+ T( F' Y# z4 c - <p v-for="val in arr">7 J4 [" F' ]$ h( ?0 X8 m* b
- {{val.a}}, b5 b5 V* A. a9 L. h3 [- S
- </p>
7 ]6 Y2 o% O) | - <a v-on:click="tap">点我</a>1 z% W' J0 i2 E v0 q% p
- </div>; V: l2 i& s) i. s$ k4 y1 D
0 ~, W# G% q0 m6 X% `; r3 D
9 ]# Y3 ~' ^/ Y! R- H) r% X' n+ m Z9 V- <script>, b/ X$ Q0 I c4 K6 c
- new Vue({
O2 V3 [7 K0 X8 o - el: '#app',
- N. d0 b3 ^+ J' S" i u8 j3 M - data: {( V0 A" w& U2 ?6 k/ N
- url: 'http://www.cncml.com'
* A$ N! O: {; ? - }
9 E- P- v s( u" Q/ O6 c' j - })
4 E; [! k q) D5 x$ ` - new Vue({4 u8 s& d0 c' Q5 j$ H# b
- el: '#app2',
9 c4 a' I/ n6 m z5 X$ ^ - data: {
# G) w* \# {$ E4 |5 o% G: N - arr:[
& _( S* P6 R( X) v: r - {a:'bb'},
4 J, O: W/ r7 K$ P - {a:'cc'}1 S2 t1 V3 C& {+ Y: f) ]
- ]1 \' k4 V+ ?* ]& I2 ^& W0 `" u
- },
" t! d7 j- G" p/ k. E7 F - methods:{
; y' _) O- T+ Z4 J - tap : function(){* A& i! k5 t, ]0 r9 m
- this.arr.unshift({a:'new'})( l" Y9 P9 o) u9 A
- }# ~0 M% ~' m8 c0 V
- }
" X9 w$ o; h! D" y) q7 }' r; ? - })
2 C, }; q: g, O- G - </script>
复制代码 ' j% r7 J# c# C" ?/ x
8 J& v' }/ _; h6 s
在这里参数是监听的事件名。
6 D% u' H) H2 o) v' g9 P |