|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">: Z( N' n; Q' |
- <p>{{ message }}</p>
4 S2 ~: q- F* l4 \9 s9 E& b - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">5 p/ f$ W+ F" E3 K
- <div v-html="message"></div>
# T; O0 J$ R' V* Y' r8 x1 i5 G - </div> ] E. X; C1 N; S
-
. `+ t: V$ \' t* ?/ [! B - <script>/ U! W7 F: V5 C7 G4 } P2 Q
- new Vue({
6 }5 M' D( W! n4 Z - el: '#app',
9 S1 t6 x; q4 y: A/ } - data: {6 F' k p' k# f
- message: '<h1>菜鸟教程</h1>'; W7 j% T, J4 C) z1 ]! F: B
- }% o U- e! D# f0 R: n; R
- })# O& o5 A, U" e& P
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">( a2 G/ g1 X# c7 P& V% ^) S
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
; B" R4 Z' Q/ U - <br><br>
$ h9 ~0 z) n$ U! s) d1 s - <div v-bind:class="{'class1': class1}"># r/ a& p8 R5 D
- directiva v-bind:class
! N2 x& ^8 v+ h! k - </div>
, J; `* Y4 Q6 i- `7 V( l - </div>
* E/ J; e- c# M: X" T7 \ -
- E: O6 L9 U- z- L1 @ - <script>
0 L% H0 H+ j; j2 u - new Vue({9 o2 K# @- E$ `; x$ J! e
- el: '#app',3 P- e4 C8 Z5 F" b7 d' G- c
- data:{) u+ d, V! Q' I l4 R- c2 g; K
- class1: false
: s) Y9 C% r2 m& |0 h' N) G3 I - }. h% `' u* {- g# W+ V3 z
- });
2 a. v+ t: K! I' G P: Y - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">5 G3 S8 y" e* o6 M
- {{5+5}}<br>6 B6 z5 ^* N/ } S
- {{ ok ? 'YES' : 'NO' }}<br>: A' U- A, U2 C* e1 {
- {{ message.split('').reverse().join('') }}
7 @ t" y3 P9 {% ~0 T - <div v-bind:id="'list-' + id">菜鸟教程</div>
* e! ^: x3 b' S/ Q- x! [ - </div>/ N9 T' w" T8 F4 x
- : w9 E" `6 P0 P2 o
- <script># ^- d/ r7 V* |( z( M8 E
- new Vue({
7 `5 D$ k, K' v; {7 F4 J# b - el: '#app'," W) ]3 w$ r, _9 v9 O J) U2 n
- data: {& r/ R& X. v" J& H/ s" R, ~
- ok: true,# G! v2 @1 n% n
- message: 'RUNOOB',# U U- c# L$ z, H' k
- id : 1" w4 h2 e4 k# X$ C
- }; e! i% ]' r: Z. `$ ~3 c
- })
; E( g; M3 \2 |5 } - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
: N; d/ t% J" W9 Q7 I- |5 G - <p v-if="seen">现在你看到我了</p>2 v7 e1 _% T9 m- e. }- _; M. R+ l8 P
- </div>$ X6 z7 A/ G3 U5 k
-
; a' M O% }% ?+ z8 b* G' }8 l - <script>
; G. P! N; q9 P4 Z6 j. d5 O - new Vue({
' `8 V: @4 [2 o) a: ^; W- J8 C - el: '#app',
( B/ I+ y' i6 e$ b' }7 \: y! V - data: {
( {( N8 D0 u" O4 ^ - seen: true% B5 |- f4 O+ u& y0 @
- }
$ C y: ]' M7 u- X - })0 _8 R+ w" i6 ?+ g2 F4 ^& }
- </script>
复制代码 8 Y4 Z, Y5 g8 K; n0 G6 W
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
3 |- L& ?3 A% d - <pre><a v-bind:href="url">菜鸟教程</a></pre>
4 A: v# P; h- K8 }; x- T - </div>
% ]8 `& b# P+ ]. U" ^/ D, } -
9 Z. s9 T& O2 I7 ]. P s6 c0 u3 s - <script>( a" \9 x* T8 n3 i
- new Vue({ h+ |7 L4 u1 C8 @7 X
- el: '#app',
, j( Y" e/ V0 C" t1 x - data: {
: s8 X' \7 a4 |( F$ I0 Z - url: 'http://www.runoob.com'
- @ _- L5 r: U$ F& ]7 a, l - }
8 @) U! n5 E+ x' r& r( X - })
* C. i6 Y1 Q1 ]" A* {5 y1 d - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码8 z+ C' q/ _+ Q9 `& _ \
- <div id="app">$ [( T. n: W% r0 \
- <pre><a v-bind:href="url">Vue参数</a></pre>. [4 C/ ?% X0 v3 f+ G$ S
% d" e. z5 w1 K C+ S+ G/ L' f- </div>1 c6 }3 U, I5 a
, D6 |: y5 n7 ~% [ ~- <div id="app2">
, D+ y! l- g- R( ]/ @$ ^ - <p v-for="val in arr">
4 ?2 E5 T7 |7 f* O. b P" ?% p - {{val.a}}
( m1 f1 [1 n, f8 f& C - </p>
. y5 V$ A% Z1 B1 e4 p5 U4 ~) U - <a v-on:click="tap">点我</a>0 v( A8 P; r$ v4 T
- </div>/ n/ |6 G% B! N5 K4 W
- 7 j3 \- a. l( J# n: N* `
- : D `4 b9 Q# u y- s5 F2 ~, x& Q
- <script>8 a2 F8 O: G7 }, {
- new Vue({
. E8 ]# g7 O3 f# c8 G, c - el: '#app',! g- v/ j U4 ^! E' @5 h" s2 b K
- data: {4 \# k( V5 ]% O; J
- url: 'http://www.cncml.com'; h6 o3 g* P: W/ T! x* E' F5 r
- }
5 p5 r: k0 d# f4 ?: r5 N' R! X! ^ - })4 ?) h5 M& c- x) J4 |' z
- new Vue({0 r4 x2 s. N/ s8 i/ Y/ {
- el: '#app2',
) f/ }1 Q- ?* C9 N, Y- h+ W - data: {
/ x9 W* W% O" j, r, P1 O - arr:[
& Y' G( B' s/ B- {2 h7 b - {a:'bb'},* C. [ f% ?- K {/ Q
- {a:'cc'}
* Q" A2 q. M# N8 u; l0 O9 s \6 k - ]4 W5 P, b2 q4 {( @& t# J/ t
- },
! f& T! I$ K" m [ - methods:{
4 R+ j0 _+ ~: D) T+ R& C; P" P - tap : function(){
0 s0 D- w4 G8 A0 \8 x8 h7 v, q2 } - this.arr.unshift({a:'new'}). x# J! ?9 j1 u+ ]6 t+ d1 F5 s
- }
3 f7 p, O# _! E# l: q - }
9 g+ M& h5 [% L- Q: _% g - })9 X0 L/ @8 c: M0 l& x
- </script>
复制代码
$ Q7 c% Z) F% @0 Y* h/ Y2 H# U
' P% |/ h Z1 D' _
在这里参数是监听的事件名。
$ C8 t* M; p+ f: r9 W) X; S9 ] |