|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">( N9 ?7 c6 a. D0 K; P. h+ l3 q, P
- <p>{{ message }}</p>
4 p8 y1 T! g z# Q+ R8 p - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">6 q6 V( D& H; u3 W' f+ W6 B& w
- <div v-html="message"></div>7 U1 l! o2 V# h, _, d7 p$ [
- </div>
2 m; i% c+ P) r: s9 t6 B - ( _2 T( A; H( x2 P2 f, \
- <script>% b% ~2 J$ U2 X- h |$ j" h7 |
- new Vue({+ C; t" H( p8 I; b4 Z0 ?
- el: '#app',
: ~( W! x6 t) O+ v4 F) y# G - data: {# `- G1 h/ X% k- m4 L% q8 O$ Y3 B
- message: '<h1>菜鸟教程</h1>'
0 x: [4 t x8 S - }, N) ]$ u# t M& v0 M5 s; w
- })
: c" m5 h, A2 @! R, m - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
$ k! |3 [5 s ]; E5 ]8 r - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">1 v5 O( s# Y3 [) J
- <br><br>
7 [. N" T0 O: T+ n X - <div v-bind:class="{'class1': class1}">
' @( a$ z- [" t4 [' t# y+ b2 @ - directiva v-bind:class! n- h/ e# P: d3 q6 f, m) O ^7 ?
- </div>8 M# c: s: g& ^ y1 o1 F
- </div>3 l' T1 c# C$ }
- . Q' t9 R5 k+ _ @
- <script>
( N+ i$ B8 p) p+ R$ L& `8 u - new Vue({) G$ R$ K0 m+ n% J
- el: '#app',$ u: ~$ f X- ?( `) E& W5 ]2 w
- data:{
2 ?0 _/ }! |3 I2 a0 ^* c - class1: false/ C9 { m2 V. F# E6 v
- }+ N3 \6 G1 u* B: w6 |
- });
4 a7 Q& C$ b- L7 O& ^ - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
& h8 D# _2 I+ n8 u+ E, J N& K5 ~ - {{5+5}}<br>
7 A- ]( ]; ~5 ]- C - {{ ok ? 'YES' : 'NO' }}<br>
- v8 X3 \6 p2 c- H) x+ u - {{ message.split('').reverse().join('') }}
8 @3 S( d) \ f E - <div v-bind:id="'list-' + id">菜鸟教程</div>5 N# u! h: U" ]# v( E
- </div>" ~' D% Y3 L0 ?2 X" z5 E
- ' o. a P; z9 s6 X7 }& @' ^5 W: X
- <script>3 X( j" b8 [7 c1 H/ K0 D
- new Vue({
& i; {2 `, X Z2 K0 D6 ^1 d& \2 F - el: '#app',; i, \& V6 q5 y) _6 D1 d/ O( h
- data: {0 I9 ~+ l& Z4 W: a! Q. i' E
- ok: true,. N# Z0 U# o7 G( w/ s0 @
- message: 'RUNOOB',
( X$ `1 T! D9 f% H9 H9 Z - id : 1
- l: E$ j3 d3 C6 B# E - }: _3 }& c% I9 r2 X* g: [9 n
- })
5 b2 `: U: f& c. v/ a9 x - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">& v% C! u9 `# E1 V" B
- <p v-if="seen">现在你看到我了</p># X% Y. M' g3 P$ U" h; j/ O6 f2 s
- </div>% j( @4 G2 f" S& l. i/ }+ D8 [+ v
- $ T' X7 \: L* M- x6 J
- <script>$ G2 s: d% C, e$ y* a5 V& z
- new Vue({3 @* H, R8 c; f$ g6 v6 |% ~) X8 t9 n
- el: '#app'," t: Y! N% j5 y' ~) o, l2 M. j
- data: {# _/ ]8 i6 t* |4 x: c" |0 q
- seen: true
' S; F- |: x6 b* Q6 N - }
. Z3 u% _- G7 R8 l) I# G - }) u" o) L* v' u8 ^# F( y1 {
- </script>
复制代码
& c& f" o* x' g" ?+ Z X# h3 W# u4 {这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
8 A8 m* r- }) x; v( ^. n; H3 T+ r - <pre><a v-bind:href="url">菜鸟教程</a></pre>) j! P9 o8 B5 ?: J4 V6 e) ^
- </div>
5 n# B; L# l+ n2 Q8 L6 \7 h - / r9 N5 i: V& l- C7 r, p4 }8 J" T
- <script>0 x0 B% ] X& ^2 G
- new Vue({
; l9 Q6 g5 B6 W7 S - el: '#app',! j$ w6 \% v+ h5 B
- data: {0 o/ [9 a0 w+ f: w: v4 Z- ^" x
- url: 'http://www.runoob.com' v7 l- j0 m) u7 @0 R
- }
: w) D6 F' a4 `' i& P: {, N - })* V. y Q! O) i7 i: Z3 y- s* W* T l
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
: {- N1 h- O( B; s0 S: |
- <div id="app">
7 z$ D* n! e. B9 g) n4 G: A# Q - <pre><a v-bind:href="url">Vue参数</a></pre>* m1 Y, z+ e1 c8 T
; q3 E9 }: {6 i! R+ r- </div>
5 i3 H4 f; w8 Q" C; Y; r I. j
5 W- s3 _6 t: N1 }& P' E- <div id="app2">
' L! {1 G- A- c# Y - <p v-for="val in arr">* M/ E. w2 ^% C1 R5 |
- {{val.a}}
) I- Z ~: M3 l5 h: v - </p>% B. u/ C! F; `0 o8 \0 P
- <a v-on:click="tap">点我</a>$ f4 v, @4 u" _$ Y
- </div>
- @0 u. A+ o1 }8 l - 5 V* w% l& A6 Z! o
# Y w& s0 P+ K- <script>
! w/ }- d {4 A; h" w - new Vue({
, Z( }4 K# w, G% f; H$ S2 y - el: '#app',2 I, Z4 W/ U8 H! B( D
- data: {! H( Z8 t9 X/ O" C& G
- url: 'http://www.cncml.com'; N% f! o: j, f* c3 l8 j
- }
: a3 D6 v* P; e [2 V5 \' q - })
" D! C) E+ y2 z) e( [* P0 e - new Vue({# [9 ]; x$ }* C
- el: '#app2',; |0 ]$ k0 k& B
- data: {
$ K! J/ a; Q8 _ j8 R - arr:[/ v# X2 Z k. k# k4 s# L
- {a:'bb'},, E- i- \- l. k# R& T8 B, g1 {( i- h
- {a:'cc'}' s$ A! \, q1 X
- ]0 \5 E3 O! U" g! K. J
- },
4 f* p) C4 t, w6 m7 N N0 {+ ~ - methods:{
' q2 T( k% {, S! S3 `, ?5 m - tap : function(){6 `5 A) N, `; K* | H+ P, ?
- this.arr.unshift({a:'new'})9 ]8 t' {# S/ O
- }7 e9 O8 a+ j0 H/ `+ m o' Z
- }
/ }+ q; I$ P ~8 P* _- u - })
0 X+ V# p, f/ R2 n9 S& a, } - </script>
复制代码
" M) v5 K g3 \) v, X# O7 q0 _. j; e- T. @' x5 u
在这里参数是监听的事件名。
# M/ f& N1 o" ^# ^, P6 K: w |