Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">4 l: E5 @! m' e0 }. Y' `8 X! b
- <p>{{ message }}</p>
3 Q% I3 N' |: M0 g6 f! w2 J' k% T, ? - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
- M) N1 |4 F$ J% G - <div v-html="message"></div>
4 r* s& Y& W4 f! }: S" G! Q - </div>
9 [) z3 t$ q! p( o6 r6 K -
: R# e a& f5 S' n+ S - <script>
/ K0 i2 Y% W+ v" C - new Vue({4 [5 B- z$ h) ^* O: ^1 E# d z
- el: '#app',. q: S$ C' k+ z, ]2 u' Y
- data: {
9 S c4 V. b0 F: J: v* K/ ~) ` - message: '<h1>菜鸟教程</h1>') H9 O$ S6 `% |- e0 ]% e% P
- }
2 X% {! ^3 t9 N$ Q$ L - })
* K' q2 w2 p- t8 w - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">' |6 u1 t/ b0 s& r) A5 Q
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
# T/ T, _, l$ ?. } - <br><br>' ?8 Y' i8 @! H/ D2 p* o
- <div v-bind:class="{'class1': class1}">
( O9 t. H6 h k8 b - directiva v-bind:class h0 A# v v$ \8 z, \
- </div>
2 x% o' \. Y0 ^: u+ {6 ?0 \ o0 t" x - </div>6 r7 @4 A" O1 V/ G
- 6 \$ X, A" H, y9 v6 V
- <script>3 H2 e4 U% R1 N8 n" h" w% S
- new Vue({
8 ]7 y% \$ s3 _ - el: '#app',+ |5 Y }; G6 b" t
- data:{
, d. Y4 P d8 F5 c1 F8 l7 }$ V - class1: false
% G) E d9 s3 t% v H) @8 c/ I$ f - }1 t4 m$ U6 G1 f; w1 N4 W- \
- });# @* o9 i+ P; s* S/ l
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
& E4 q& a5 j8 k- r - {{5+5}}<br>
( R# d- g2 g& ]$ e% v$ b - {{ ok ? 'YES' : 'NO' }}<br>
" ` v5 y ~/ ^3 K5 p. Y f - {{ message.split('').reverse().join('') }}3 ]6 d4 U* p' c" h7 z% R6 r% a
- <div v-bind:id="'list-' + id">菜鸟教程</div>; _( F) d+ _$ y4 ] M
- </div>+ _2 f j% h3 c1 b# L
-
4 Z- G5 M! z8 P7 E - <script>
/ [9 y# f$ H. f$ g, l3 A - new Vue({- t$ V5 `8 r- ~; [& }
- el: '#app',; f- |# h$ p5 |1 U/ S0 p
- data: {$ I- p B/ O) V# T" {
- ok: true,
& o. p! |' q# m5 p5 Z- e5 N2 P& O - message: 'RUNOOB',
$ X8 n3 A2 g4 c9 }" X - id : 1
3 D6 {7 B7 `+ W% G: G, z( X# T4 Y: e - }0 n3 U+ S; ?3 [6 u" A, ^
- })
- P8 o0 ~) z. r7 C2 j5 S9 B - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
, g" e% A% ?1 g, ^3 ] - <p v-if="seen">现在你看到我了</p>
W! l/ N) T7 G$ \' {) ^/ h - </div>
7 {9 L+ w( Z w: l -
% I# B8 ]1 u, J& D - <script>
1 s0 P$ O; U4 _4 } - new Vue({. m* m$ A1 n/ K, U, u0 Z
- el: '#app',+ |- X& [8 k7 Z4 ^
- data: {
1 w6 x: A: l( {- z5 i, x. Z - seen: true' w: c& F: L: V! W
- }; ~$ y3 @5 q" [+ T) A* M* d
- })# n0 ~, p3 i, r" ~, { R3 z+ H$ ^$ }- I
- </script>
复制代码 1 ^7 s% J! Y6 g4 p
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
* I1 j" M3 A# ^ - <pre><a v-bind:href="url">菜鸟教程</a></pre>- Z- a5 Q. P, w- |! h
- </div>/ @$ P% W" I4 X
-
q' h5 ^+ j! _4 ?- q, d" e - <script>3 w+ W. o& I" K% |' B; e/ r
- new Vue({# a" ?+ x; N- m4 n+ V9 H
- el: '#app',
5 y0 k9 E" y; M' B - data: {
# T' Z. o$ ~$ L' J2 ~ - url: 'http://www.runoob.com'4 J! z6 n: y* U& I: b
- }
" K$ v( l2 s: K( y9 w7 d% Q3 n$ m - })
9 |0 S6 c" S1 ~, G* H8 p - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
0 b5 k, l6 U9 z) u5 U- |
- <div id="app">
' F: a$ a3 Z5 Q6 c( u - <pre><a v-bind:href="url">Vue参数</a></pre>
8 O7 p$ N1 t! }
* x( j" a' r$ x. E4 ]# j9 Y- </div>9 ~! S! }# {; r/ }9 ~ b5 N
+ t& V- g* e5 g+ [" S0 A8 p- <div id="app2">1 I* U q: U% K0 L" V
- <p v-for="val in arr">
- v) D* e& P0 z6 F* j7 U - {{val.a}}: P! m. T- L0 ^. _" M
- </p>
7 g- W# ?" O) ~+ H+ X* I: ]/ j - <a v-on:click="tap">点我</a>
m9 C+ i+ ^ y) Q% m9 K - </div>9 Z* a k' M9 H& S/ A8 }! C( q, r
2 Y u" [4 U) n. H2 `8 C8 C* _
/ h5 w; J( O a# e7 K- <script>
% `2 r, Z7 S, x8 A0 S) Y7 A - new Vue({
. H+ v9 i* {6 H7 f0 _ - el: '#app',1 c. W& S# x- U: h( U7 T' [. G6 ?8 c
- data: {3 G: c4 E7 H& t |/ H( B" }, g! x
- url: 'http://www.cncml.com'
) K3 ?- m. X; h" v q- Z - }
1 Y+ D+ Q& ?% o7 O; g6 W - })
; y3 U2 M, V* A8 A - new Vue({
/ O# M l% M2 q - el: '#app2',
& j# }0 p4 W& y - data: {
& a1 v% {6 c% O - arr:[) `& g" `. N9 n4 k
- {a:'bb'},
5 `- F% u) y2 ~* \ - {a:'cc'}( @: o h G& d9 C4 C' W8 Z
- ]4 T5 Z4 Y3 o' H" N
- },
6 Q1 ?( n+ D. `' E1 [ - methods:{
" |, y8 m6 H* \, `" D; e/ }; K - tap : function(){
& k: m' s2 v+ u) \3 F( O( _ - this.arr.unshift({a:'new'})9 [. P' q* M3 D/ T: F
- }
) B, f5 k. p, B9 L - }
# J# F5 n2 r- o) B/ y+ R# r; J- }' j) C - })3 R- F. z* j6 M1 f) H: ?8 W2 V
- </script>
复制代码 # q' i- T8 K! D! {; o
7 X; E2 q( ~- c' }" V+ e
在这里参数是监听的事件名。
4 \5 U1 x: ^* @5 J |