|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">. X. P/ ~# N& i
- <p>{{ message }}</p>
. B. W/ S" c$ d. e - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
1 b0 v+ w$ ~1 H' D8 ? - <div v-html="message"></div>% w, B/ U8 r: U& D
- </div>
& L- G6 S* K+ C8 q" E* \ -
* O1 |: T( p; J1 y5 ?' J8 d - <script>9 d% G1 M' ^- Q2 p3 k
- new Vue({
5 U0 X; W% c1 Q6 J8 E' u - el: '#app',
9 t9 D* c; i4 ^* {& } - data: {
& Q- z9 ]* L' V3 t, T& K - message: '<h1>菜鸟教程</h1>'
# L8 a! Y3 B$ B( ^ - }. g# G1 d8 f4 L. ^# U& C
- })3 X8 r4 b$ G/ s! G1 k9 o7 N% @/ m$ `
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
. ^$ Q( ?7 P$ ~ - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
- N" E j/ R7 e, n9 G - <br><br>
. P+ H2 Q% v+ x& y - <div v-bind:class="{'class1': class1}">
( Y3 C5 ]/ k. X8 ^2 Q - directiva v-bind:class2 d# U* J- j1 p( @" k4 e+ u
- </div>
7 N; f8 V. ]4 m& R3 a1 v - </div>
P- B: d. v9 w4 ?, G9 C2 N -
, m7 i& e" r8 U) K7 G! [' R9 J% a - <script>" I; i, L( a* c( u( d7 |- G
- new Vue({
2 X$ Z$ q( z6 ]1 ~ - el: '#app',; N4 o/ d. E1 ~
- data:{% n* N4 |1 }. C( f, w: w# v% k
- class1: false
: j2 {( ?9 k1 u. Q - }; ~2 S' Z0 `1 y5 Y% `4 A* J+ G- e
- });: E$ F6 a1 Y. I! o
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">/ M* ^% p& R6 P6 }$ ^1 ^
- {{5+5}}<br>
0 q1 P- Y" N' b) b! ^) z8 L5 @ - {{ ok ? 'YES' : 'NO' }}<br>
6 m- S% X; i- [9 m' P - {{ message.split('').reverse().join('') }}
. h6 b9 J6 P4 h0 w: U/ v. r$ S4 X) O: I - <div v-bind:id="'list-' + id">菜鸟教程</div>
: S& a( N# a* W: @ - </div>
6 }0 D8 w3 f' O" b5 u) _# U -
+ \: C# u& G9 m9 d8 G6 K3 q - <script>+ h+ z8 b; h( r: |7 ~% V# _
- new Vue({
9 o' ?3 c6 A5 `1 S s* l; q3 i - el: '#app',
) q! T0 m4 ^0 V6 D. V8 a - data: {
# n! K, r: P4 t2 w$ x E$ B5 n. k - ok: true,' R' X: ]; C3 U6 ?" q
- message: 'RUNOOB',
$ ~# l7 L5 @2 P - id : 15 b1 I6 w) k! a' o& \7 |; Z& ~0 x- R; {
- }- m$ \0 Q* u' x9 G( ~2 q
- })4 T9 {( }9 u; \/ _5 {. K s
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app"># J8 }9 H# a7 \
- <p v-if="seen">现在你看到我了</p>
1 G4 h2 x9 z. I. ?& }6 t - </div>) l0 Z, f, v, c9 F" i0 J
-
# U, l, F& y6 L3 p2 f( d - <script>. d2 k( [! j& {+ [! m! M0 [
- new Vue({
5 ` j# G" R& v& h) d4 N3 O - el: '#app',
. u+ b6 Y+ `# I' _ - data: {7 G9 B& b! O5 Z0 l/ T
- seen: true/ }1 X% K2 i: I, c
- }" V2 ? [, a! `
- })' f J. L, m" d3 j4 n1 @% }3 i
- </script>
复制代码 : N! _ E" Q$ K: S: m
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
/ G6 a1 o! {' } - <pre><a v-bind:href="url">菜鸟教程</a></pre>
" w3 z0 _1 ]1 U/ d- S0 @; O - </div>
4 h! O- F# H0 J3 n/ y: Y, L9 u -
# d3 s" l0 G: o+ L: { - <script>
! r4 f' \1 V1 D4 a W& N( O: B9 e - new Vue({5 t, k( V/ X8 `9 N/ U
- el: '#app',
- g$ ]0 b# O) V4 J' W - data: {3 h8 Z. v$ E5 I3 ]0 O
- url: 'http://www.runoob.com'
% j0 P* c. B. Q; o! l- B0 B - }3 V# ^9 r1 o/ l1 _
- })
5 A% [. `9 U0 l - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码3 Z: E# G, ?& ~6 N) b. V6 a
- <div id="app">+ e$ { V3 i) L* N2 p7 O) v
- <pre><a v-bind:href="url">Vue参数</a></pre>0 C+ l+ K. {, C: Q
- 0 r2 n# X/ n1 s# `- ]
- </div>
" K( {/ l" K( z9 G) B
4 @) j8 V7 }4 m. L7 p- <div id="app2">
^: n8 T% ^- B7 w& k& c - <p v-for="val in arr">7 t( o+ _: w6 F: |. b6 T& I- w+ }
- {{val.a}}8 |" T, d8 ?8 y5 d; ] l( S
- </p>
* @4 _$ B: Y+ \% u1 p - <a v-on:click="tap">点我</a>
1 G8 U, k; t- m( }& z( ~& q - </div>
7 P! _$ @& R$ G& e/ s7 i
1 X0 r6 T! b) d e/ V" M- 5 o9 }# `1 g! @: e2 i* \0 C: [
- <script>6 U* o7 b4 N. ?" a, T0 S( V
- new Vue({: X; J# b/ A+ p# M/ r, ?
- el: '#app',
, ]8 T7 J5 V# ^4 L% z+ z& r - data: {
$ z; J s) z7 q, V - url: 'http://www.cncml.com'0 m; y/ T* _, S4 v6 i" M+ T$ S6 K
- }& ]: y! S Z3 q3 [* e. v
- })* Q2 u5 n' q# j8 M; {
- new Vue({/ s; P# ^- |- a
- el: '#app2',* n, A" Y& E: T, c4 Y% N
- data: {! G' O5 E1 ~& |* A. Q% M
- arr:[
% b! h8 q( z2 D* B - {a:'bb'},
+ y, V4 x& [6 T - {a:'cc'}
* f/ p% b$ ]- w! z - ]: j t/ ]" j" _* Z! A5 z7 M$ ]
- },
0 x/ M. e8 M0 x6 O Y2 x - methods:{) @& |9 \8 D, M, N ^1 q! q
- tap : function(){# y1 N6 I) z- m" s! Q/ B
- this.arr.unshift({a:'new'})
0 n9 _# d/ m. S - }+ i: Y' x# ~% N3 A
- }
( O$ H3 t/ g, S. |: m - })
& a3 u/ p z" ?/ C+ j# }) \ - </script>
复制代码 ( _+ e; O) ~8 `( v7 k2 i
, Z: Z; K7 z; h" A8 i; ^( ~/ M
在这里参数是监听的事件名。 , W# v7 ~: j% S+ `, t
|