|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">" w" X/ m7 t! A! ?0 P' ?
- <p>{{ message }}</p>7 {9 g7 @! M( w. i/ }# }- w/ k: n, k: w: v! z
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">0 z' l& F, g0 F g
- <div v-html="message"></div>
9 c' \; g- }$ g - </div>
4 B/ }# W, w$ F' v" u1 t -
/ d! J+ o* z7 O* s - <script>; I6 c: ?% t9 k c) {7 e
- new Vue({: n9 R$ _& K5 \% Q
- el: '#app',
9 Y4 W+ H; X1 Y+ `/ W; S - data: {) U1 N1 {& c9 \$ B' O* \! v
- message: '<h1>菜鸟教程</h1>'' C6 y- G2 C y a' B
- }, ?2 J( t s: E7 ^0 E
- })# L( X1 b6 ]$ y0 w7 X h5 m
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
`) R& a }" P - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
( r8 Z3 w6 M- \7 T - <br><br>' B$ d; z( ?# H) w6 c' |
- <div v-bind:class="{'class1': class1}"># }% M! o& x6 A
- directiva v-bind:class
/ K1 u$ b7 Y4 d# k0 f - </div>1 X1 [4 u y) \9 k) B
- </div>
" ?4 u9 f! v$ s, [ - 6 L: [, ?7 F9 v# ` I% ^6 s$ W
- <script>
& ?! S. C' P; W# o: U' g3 v) v$ f - new Vue({
7 w- e. H; t) r5 q4 s - el: '#app',
- h0 p0 \4 @2 w - data:{
- a1 i8 [$ {+ }; Y - class1: false- i* G* W3 Q" R1 L" C# Q, _1 g
- }1 M- R w- r) T/ t. B# C! G/ `
- });
& @) X! C3 }% s+ l - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">( @5 [3 y& i+ a8 P
- {{5+5}}<br>) c1 e& W0 ~5 h; t& |0 J, |# h
- {{ ok ? 'YES' : 'NO' }}<br>
9 T9 t4 l: }9 r y L5 {$ H! P S - {{ message.split('').reverse().join('') }}
) w( @4 ~9 {3 l! h6 Q% Q+ x - <div v-bind:id="'list-' + id">菜鸟教程</div>
2 q6 p% i& |) F3 c5 H; z - </div>: P `% J; k1 e
- . u" z% G2 Z; f& i9 C' ?% V6 u
- <script>
+ I# D, F3 y5 a - new Vue({
6 w# T6 V* N7 w* _ - el: '#app',- x2 S* i8 R4 U3 s& Z6 Z# M
- data: {
2 \4 D* U1 c K) u) V - ok: true,
( {! `( A9 l5 A U8 K" K - message: 'RUNOOB',) i2 n" d% I, k. _. {
- id : 12 q" U" Y' b7 c: g% O4 @# q
- }
* p$ L, b% t7 m. a' Z i/ { - })
# h4 _) ~) v3 ]/ _/ } - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
$ ^5 j* g9 M( Z/ a - <p v-if="seen">现在你看到我了</p>2 T$ Y2 X6 h: `7 H1 ^4 A1 C
- </div>
1 u% W5 h% S* ? - ( T. f1 D# u3 X$ t& p: K! m9 i' P5 j Z
- <script>
5 r$ m; G2 d3 w* d/ L4 g, ^5 m - new Vue({' V( w6 D0 v/ M1 g# K9 O
- el: '#app',5 t2 T( q' [' ?+ L1 {$ i3 ?& w8 F
- data: {
) f' _% B! n6 G x f - seen: true0 l1 R( l" x' k" l. T; O O" ^
- }) Y; Z) i0 S2 C
- })
5 I5 r: j& Y0 p* l6 P1 I e8 Q - </script>
复制代码
0 q$ A$ O: E, C) J9 `这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">6 \; v: f! {& z) K
- <pre><a v-bind:href="url">菜鸟教程</a></pre>
( [7 a8 R$ \- Q8 [" C6 c - </div>
N. x5 F' S: P/ `0 b& M - / m! Q: `3 N: K; H
- <script>1 F" [+ a% e: n# r7 V5 q- v
- new Vue({
' ~. `; q: t) l0 i- A" @ - el: '#app',1 Z y1 V4 N' R' N# [+ p) W! S
- data: {
9 o# u; v9 x* o - url: 'http://www.runoob.com'
9 L/ f3 z3 q/ r7 O$ |- \2 R - }
; f4 m9 u5 v4 Z4 i' j+ v% ^* b1 G% } - })0 P% W% A. k) A- y
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码: l! x/ B* Q. Y" m! T& R! q7 Y
- <div id="app">8 O \# U5 {' E! e
- <pre><a v-bind:href="url">Vue参数</a></pre>+ H$ U+ G, {) H4 i% D
- ) m* y" Y7 P8 o, {: E% Z, A
- </div>6 }& W/ D4 K- \, a7 Q- U& }7 U
- ' r6 E! ~2 `4 I: {! Q
- <div id="app2">
" c! A4 y+ G9 ^/ H# g - <p v-for="val in arr">5 r' V9 Q& |* F, D
- {{val.a}}
9 G- ^5 q8 V7 ~9 A% } - </p>
4 v% e/ x. T$ Z n5 [% D4 I) a - <a v-on:click="tap">点我</a>' s5 L# o! X/ m% Z+ c- l' Y& B ` U
- </div> g/ L. n7 w( ?
4 y( @; y( W0 E2 u e- 9 \9 V% r7 m0 A- l% F; i
- <script>
7 A/ l: x4 ~$ Q- t6 [% F, w7 ^ - new Vue({ n6 c4 L% F, u( |% ?& h
- el: '#app',& f! V6 G5 C" d# y: ]
- data: {
2 H8 H" d+ {9 r; c) f- T - url: 'http://www.cncml.com'/ a$ V& M6 A2 S8 S
- }
1 A7 Y: I: G" w - })
" u5 [7 r3 }7 g, Y - new Vue({! e6 h6 a9 t- y: C5 b
- el: '#app2',% f% r5 u( p" T" q+ q
- data: {5 s/ W t2 O# A# V& B: V
- arr:[
& q9 Y5 `9 {6 F! e6 o+ G, j( ] - {a:'bb'},2 |% T/ Z7 n7 a7 k0 t2 V2 S
- {a:'cc'}$ [) a4 e) y, [3 p6 x1 G$ }* G
- ]9 p3 @& g4 e/ V7 W, U6 N$ y, M6 G) s
- },( I( q4 v4 x+ p
- methods:{8 ^/ u0 P+ q% t! g, U; m
- tap : function(){
( W4 f7 ]/ e" z# ~% p- ~/ W - this.arr.unshift({a:'new'})0 U1 C, L$ C1 @
- }+ r J* z% e0 H' s
- }6 W. x& J* P! j" G) W8 C8 f
- })5 _* F+ n& N1 s. D0 e* Y, }% z
- </script>
复制代码
$ [) e6 j/ u; P& y. t5 {: b- T0 ~* y3 o W) ]
在这里参数是监听的事件名。
7 E- D" i3 Y. K/ K9 x |