Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
* B" a2 B7 J/ f. q" c, v - <p>{{ message }}</p>( ?. ~4 B( _* }, ]$ H
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">! [1 g% p, c! M( |# p& l$ u
- <div v-html="message"></div># [6 | ~0 y, K
- </div>$ s1 k' [( i6 O9 P8 T2 Y9 J
-
3 {9 ~, ]5 w$ i: s- A - <script>) g$ {0 t5 c% w+ X
- new Vue({ j: y) Q! m8 @# C6 H! T# F
- el: '#app',3 d) i2 E% C* Y3 G
- data: {
( ]! P n! B$ u' O* r9 s - message: '<h1>菜鸟教程</h1>'' }0 y- s! c5 E- o! z4 W6 ~4 y
- }& z( |( x2 @* A1 O5 p* |
- })0 Z* w* x* Y9 q. I* A" b' O
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app"> v7 i( H9 c1 L# K0 g8 P# J8 J
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
0 u d) g. X. |1 v; h5 x6 j - <br><br>8 a; s R2 u$ `0 I# Z# G( {+ ]
- <div v-bind:class="{'class1': class1}">1 M( k; S/ ~6 y, ~, z: S" ~% W3 U; a
- directiva v-bind:class
; k# J) D% D. g' m - </div>" P& L; v" m0 \7 E- C
- </div>
' M% z! ?& w$ A6 \5 z* y6 E - 4 Q& \. g' {+ M/ X+ H m3 F
- <script>( r# M6 T; G# u- z9 F4 g6 q
- new Vue({/ H: y) N# r4 m- V7 q3 e
- el: '#app',) P# T3 e; Z y8 ?4 ]
- data:{+ @# }! a7 m8 c; F0 g0 _3 {% u
- class1: false6 }5 g5 H3 S1 q" o, O
- }. q" c* n, A" q4 G8 K
- });
- t. Z6 F# N/ I; V - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">; v4 M1 V5 x% F, U1 p% v
- {{5+5}}<br>' w% ]/ G$ c8 S
- {{ ok ? 'YES' : 'NO' }}<br>
7 U8 i9 o O4 S$ C4 z$ s& v - {{ message.split('').reverse().join('') }}
9 T5 j# O2 ^/ H5 O5 d - <div v-bind:id="'list-' + id">菜鸟教程</div>8 N, g% E `0 h- g9 ~- D
- </div>
4 a p6 S2 O! J+ a& z4 [+ s -
; M# R4 Z) L2 s4 i4 U5 o: H9 V7 X - <script>
% X/ l0 Q1 r7 }) Y6 Q) i - new Vue({& w* a8 ?% h1 ?, Y& s; v) g! g
- el: '#app',
! w/ z/ t6 W, Y2 u$ z5 ] - data: {% }* x x9 @4 V e3 ?( v
- ok: true,: i: _ l" I# ?& x
- message: 'RUNOOB',
0 J. x) P& a @5 X - id : 1: n; r9 j9 C3 Z$ s K e
- } u1 D+ X: ?) |& a; h, X% s
- })* t) r$ _' M+ z$ R: m$ ]
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
n) Q4 k2 ]3 r$ { - <p v-if="seen">现在你看到我了</p># y1 V# k2 ?$ m; o7 B
- </div>" W- F' B( z! H) {5 J. e
- & ^6 _' I: e" |% N' L, D
- <script>4 T6 G' w z! D/ }
- new Vue({& x8 ~9 ^! u" F' C
- el: '#app',
1 Q8 Q3 A9 G5 A' T - data: {" r2 U1 E2 J+ @+ }" P
- seen: true
! Q$ X6 H9 E+ D* C: y - }& B* Z, q8 q( S/ X- G
- })
3 n+ l9 {) c7 P: J6 S - </script>
复制代码
: j3 B, C7 V2 O& R$ v. _这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">- n9 X+ }9 e# O" ]6 u4 I; j) z
- <pre><a v-bind:href="url">菜鸟教程</a></pre>
3 D, c h* x! A9 e; z0 V1 ? - </div>2 c o! O7 R' G q& b5 H; P; W
-
! u* @7 p/ P. u6 p$ P' j( U4 R/ x - <script>7 @8 g( d$ n) h! w4 ?
- new Vue({) @7 R' R* Y# |, I
- el: '#app',/ C9 A$ Q: X6 {8 u, v6 ^$ C/ J
- data: {
* j& ]5 N* E0 Q" _+ L! ?# t - url: 'http://www.runoob.com'' e' |3 r- k1 v, N% T6 A4 K
- }
5 X0 X' v w% A$ C% ~ - })9 B* _1 @ R) y" Y3 R
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码# k" D1 a: m4 ^& Z1 b
- <div id="app">
- ]9 K- a y. i G, X5 ]8 P4 h - <pre><a v-bind:href="url">Vue参数</a></pre>3 X/ S+ G6 `+ T5 `1 @0 v
- 3 f* m' i, Z4 L1 s4 j
- </div>' I: U/ x$ `1 e- q" B! i
- 8 C! n/ ^6 |- j$ @, F4 r
- <div id="app2">
+ G4 }: ^; U' v* F, @" ?0 P: u - <p v-for="val in arr">
V: v! K* d. M; \1 `1 `7 y - {{val.a}}; e5 R5 n! D# @" @2 _+ K+ w
- </p>5 f8 c# t: a, T& I
- <a v-on:click="tap">点我</a>
) t: U n+ C2 s - </div>) d6 K4 E4 ^ E7 c! S$ R
& e# I/ H6 M- d: `: m- b
u# C, W$ ~: ~- <script>
0 W) t- r* O5 u - new Vue({* L) h, B! X' u5 j- i
- el: '#app',7 n0 V4 G( Q" ]6 h; L1 x
- data: {. h% a; H8 R5 L( C ~9 s1 \, @
- url: 'http://www.cncml.com'7 `; j i6 R2 j' {" H
- }
; d( f5 l5 j3 D' @7 Q - })3 B+ d- H! f; }* ~) c" _
- new Vue({
0 m- B+ |$ j6 U: m+ [# p4 } - el: '#app2',7 E+ ^0 P" U' M Q+ f9 X# R
- data: {
0 U- l, m9 o" S: U/ ` - arr:[% {2 A2 A% a' i# O$ v* [* w
- {a:'bb'},
' P; @2 o' G. G5 O) e/ f: R - {a:'cc'}
( t0 J2 I( L! r ]- h - ]
. }1 l* Z8 Q% `# ]. r3 ~7 c - },% n5 R9 s/ k( D0 P5 q( f) x" T3 [
- methods:{
" `) H" @0 s# J! J5 R/ w* r- C - tap : function(){
+ H: \! t" n$ G& r( ~ - this.arr.unshift({a:'new'})
. x9 n# i" \% p1 @ v - }
% f) u* I+ s; T# } - }8 U$ V$ y) Z' Z0 K" A; Y" A) ?
- })
- B3 s" h8 q5 l! W - </script>
复制代码 7 n! L6 J. N5 S9 z
' N" m$ [* T, e/ n5 X
在这里参数是监听的事件名。
( P- M3 j$ f4 E/ d |