|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">& `$ { J7 ]( ?, ~, t0 U
- <p>{{ message }}</p>
9 E) Y. i" p W6 Z - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">. V/ ^# z* V* L
- <div v-html="message"></div>
4 I; n* g( `/ w- {9 l" C - </div>
8 K8 \0 {( G8 L -
6 b$ ?& O# U; y; A6 {7 A - <script>
4 b2 c0 h2 K& ~6 G - new Vue({
: l; E( a9 b! S" s* k, A% Q - el: '#app',
. f" s' S! Y* |3 j) [ - data: {& c9 L5 Z; d4 ]% Y
- message: '<h1>菜鸟教程</h1>'
1 Y, k& }: @8 S7 k - }
% I) y5 |) T0 |+ {$ C - })
- o" f7 T6 f1 v: w8 p - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">4 v' \. K. _* \1 E* W8 u
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">; |, I: `7 j. ~2 P, v# w
- <br><br>3 b4 _# V9 S9 d8 v s( C
- <div v-bind:class="{'class1': class1}">
* d, @9 `5 Q- H% t, { q7 h$ \2 ^ - directiva v-bind:class
8 U) F( @4 l5 `" }4 `5 y - </div>
- W h$ m a7 G) V- Y2 E - </div>0 W4 {% E; m, W+ \# @" `5 ^
-
, A: X( b8 G8 Y+ k5 h9 w& Z - <script>& d9 X9 i3 z a+ {8 x% j; r8 ^
- new Vue({
, T# D* e, C2 y: \' _) I - el: '#app',
% a5 H6 e8 a+ l4 ?& d( _1 t, D/ J# `2 S& ] - data:{
/ J. Q5 C5 g% j/ j! J/ E. H7 g0 V - class1: false
( N# h; c. l2 e! W' F" l9 x6 z4 [ - }
5 |9 ]9 P) \; W- ~- h- J - });
8 s: d$ E# q4 S" R- v6 A - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
T$ l a9 M' h0 Y! o- i. x$ f - {{5+5}}<br>
e* C: d ]9 n8 g1 ^% ?9 a/ v - {{ ok ? 'YES' : 'NO' }}<br>, R- g- V u: C) S
- {{ message.split('').reverse().join('') }}
2 x* d$ u* I9 z, g - <div v-bind:id="'list-' + id">菜鸟教程</div>
6 R; L! p* U9 _6 m$ |6 v" } - </div>
* V- m1 k+ B3 E! d -
+ k8 I; ]" f% Z% {+ |. N( G - <script>" H" s* m0 l3 N# {& v
- new Vue({% Z# k$ l m" H' E: o
- el: '#app',2 g/ A8 |/ X0 e8 F3 \
- data: {9 x# n5 r* r% \' Y
- ok: true,9 e* C. A, g8 S1 ~1 ?
- message: 'RUNOOB',- _0 ?+ j0 ~6 G% ]6 {7 c- ~
- id : 1# ~; [, w& E0 Q) u% X a
- }. J: e! J, `- A, u
- })
% M; j, P) ~( x" o, K( x - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
/ j9 D: h+ ?1 ]7 e+ Z7 J8 q - <p v-if="seen">现在你看到我了</p>
+ y2 Q& k; M3 S) X: A - </div>
% b$ o; R) L+ ?2 C2 R' ~& H# q% f. U -
) n! r. ~; @4 b) p% f - <script>( Y( c' h3 ?) C) [: W; X% J
- new Vue({
/ g% W/ L* |0 r- F/ N8 i% S - el: '#app',
4 @ @: w! y7 G! l% } - data: {
}2 o: p! W1 j+ \# J - seen: true6 _8 X' ~& m+ R. J( j3 H
- }
% q0 D$ a0 u2 R3 P - })
# _+ @$ @1 p6 c - </script>
复制代码
% L( [) n5 _. B5 m2 ^3 z这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">6 e( P7 p3 ]$ l7 t, x
- <pre><a v-bind:href="url">菜鸟教程</a></pre>
9 Q% T" t" S% A, k) y: y4 P" k - </div>, J" w) Q% V* p+ E6 ~. c
-
3 Y3 {( l) A! v' I! W, J# x - <script>
1 |0 K2 ~: v2 q/ a. b7 B - new Vue({# o9 @) \5 @- H- u# I
- el: '#app',/ y; m k) G, O- G0 L; s( I' [
- data: {9 O6 w! G8 R' ~/ D
- url: 'http://www.runoob.com'
- O" w' o, k0 K7 t) T2 c$ r& j$ E7 u - }
8 u! u! U* i0 V' p& d - })
: G% T* Y+ _: S- F6 V' J9 l - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
3 Z0 Q# q( f; a0 i
- <div id="app">
}: n5 C1 }) X) O9 A' D3 u8 I - <pre><a v-bind:href="url">Vue参数</a></pre>; x U& Z0 Z& E( _3 j, C5 Q
- 6 v- }! A- H( A, C( ?/ @( R7 M; ?
- </div>
0 W- T' [+ w: w s1 y3 ?2 s - 3 M# I. {& I2 ~5 d. n
- <div id="app2">- j6 b$ S5 R: f
- <p v-for="val in arr">; `' w; i9 C' y) j x
- {{val.a}}* @2 u$ Q# \, ` Y$ ~8 R7 I& Y8 M
- </p>
' j7 K; C+ n! {5 K, N/ s - <a v-on:click="tap">点我</a>3 L; ]& T% W' \0 ^6 y8 @
- </div>
+ n z* t* ?8 }
5 G. g* u) l! m- L% }9 y1 y! S- 7 @! y' B- m) s; ~6 A8 U5 ?/ k2 K4 m
- <script>
/ M. V: V0 G; U& \ - new Vue({( W# G% g* _+ }" |1 \
- el: '#app',
3 E& E" K+ b( \: l/ n. E; E9 k - data: {, B+ P2 M: D( x- ]
- url: 'http://www.cncml.com'
) o: T8 M0 V2 a/ y) D. t - }
! l8 _% M0 Z; d2 \6 i/ s. K - })1 q4 l N4 b, Y4 r% {. C1 Z( ^
- new Vue({ V ?: o$ Q$ r- R6 s# U+ ` O
- el: '#app2',
7 e& |9 a; u6 r$ Z - data: {. U: H8 u/ | Z, k3 k
- arr:[
- m" [! g$ g9 U$ f - {a:'bb'},
/ `5 ?7 C) z. @5 e - {a:'cc'}
p2 _/ `2 b, \! J# Y1 ^# i - ]0 I/ G( b+ m& C% U
- },
% v. x# a4 a, x* x - methods:{1 k* }( F6 k# ~0 V2 T" J# I
- tap : function(){
2 {* q7 B& v- t9 W: C - this.arr.unshift({a:'new'})8 K/ [ h& F- f9 Y+ b% D6 W
- }
. f& ~7 y2 T! a - }# f9 [: }: c3 ~3 |7 m) c5 G" }% i
- })
6 `) f: b' h( V1 ? - </script>
复制代码 % n# _; j$ U# S" v
! u" ?4 l1 R, f0 \
在这里参数是监听的事件名。
9 ? A/ {: Y9 ~2 O; ^5 k# y |