|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
7 r! ^( ]1 p) u! }) ~ z/ J, h - <p>{{ message }}</p>
4 l R) t) L. h) u2 |' b - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">) g R& a) R. p
- <div v-html="message"></div>
" O5 v+ ?; y* R( X - </div>
8 v0 M! Y3 K& s+ m8 a$ W; ] - : P, T" V0 B: V1 U' ]
- <script>
* ]& Q# ^6 d. y* L - new Vue({# f' M8 C# w$ X4 |, a% E4 C
- el: '#app',$ ^5 j. c0 |7 q) B6 C. n1 d
- data: {8 X* x1 t1 E; X8 G2 K0 D
- message: '<h1>菜鸟教程</h1>'
3 y+ B/ y* B! D! ` - }
; F* G$ ^* \1 }' j, I& K6 R - })
+ O6 C5 n, n6 y! M# j. C% u - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">/ ^5 C5 H8 H& b, [4 c8 F* \0 A
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">, B% u, b B" t9 _2 _
- <br><br>7 q$ q* A' a# \, ?: M" D( g
- <div v-bind:class="{'class1': class1}">
5 ?* P) E. u9 J6 X: U/ ?7 I - directiva v-bind:class
6 d( _+ @7 m b7 ^ - </div>' w" h. U4 e! H7 y3 T4 i0 I
- </div>4 y& K7 j) L, U+ ^3 c, G
-
$ i1 |. c4 ~$ A" ]# C# B6 y - <script>+ q- ?4 y4 a: Q' G$ J$ p% B
- new Vue({
7 d- \6 ~ O: ] k - el: '#app',
% v9 E9 H; [+ d: |2 T! X - data:{2 ^. ?8 c! f* a) j6 l2 Q2 G
- class1: false. M; k' C$ u. [ B5 R' H
- }
7 u( k" A/ u0 W& b - });: p( b; i% q' S6 U6 X1 c( ]+ s
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
C. N! o, h4 K4 H* J - {{5+5}}<br>9 x6 r: |, ~) L
- {{ ok ? 'YES' : 'NO' }}<br>5 m6 |7 l4 P. [* V. e6 _0 |6 h
- {{ message.split('').reverse().join('') }}
9 e/ b5 ^% p3 @% G% K! y) I8 a - <div v-bind:id="'list-' + id">菜鸟教程</div>
, _3 q8 i2 M. X4 z: c3 \ - </div>1 \' N$ g; p* \2 G' e
- ( x8 Z s" ~2 }2 J' U# z# a
- <script>
0 ~ k* z7 _% i( [. b - new Vue({
* M$ y/ v- P! t+ L, B4 m! H - el: '#app',3 T% v' l9 Z" X" t
- data: {
4 y! h3 @5 A) c - ok: true,
H; \) B3 [9 R( v9 Z3 ^. y - message: 'RUNOOB',
$ Q2 p3 N4 y# W! D/ n - id : 1
9 ? T S$ ^& i3 a5 e4 d, X5 I - }; A0 N* e. t/ E8 K/ D/ S$ L
- })
! c* B- ^ V. K7 z: l - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">( i8 h& d3 v( J- G9 z7 k4 _% E
- <p v-if="seen">现在你看到我了</p>9 J u" L* c6 _* c8 D) G
- </div>
4 r+ X0 C3 S+ w; p3 V+ M. m3 L1 A - 7 u$ b: a8 G2 Q5 W
- <script>
g" A, w( Q8 [( G - new Vue({" E/ q: o2 l' J5 A$ p" p
- el: '#app',9 [: `- o, Z* T; W" k* Y( p
- data: {
4 x7 n3 Q4 O: c7 k3 K - seen: true0 F" R g& [) n8 j$ t4 S+ j9 O
- }( O( e8 [$ N+ r0 E2 o% G7 ]
- })6 w* ^$ D1 C6 c5 w* }; ~, j. x
- </script>
复制代码
- T) L8 k0 S& Z8 u6 ^7 I ]这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
6 ~, ~( a4 c7 X- e( ^# ~5 H - <pre><a v-bind:href="url">菜鸟教程</a></pre>
: E# j% _9 I8 q( w7 _1 y8 e - </div>
6 l( u2 t; F* `1 r0 R* c' i - 6 a. t+ b0 F% S" v( P: H
- <script>
5 z0 f0 v' i F: T" N" E* C - new Vue({
2 Y: i" ~6 S% D2 ^ y9 E* H8 l - el: '#app',9 }0 l% P% w6 w; L) {& p2 M: o
- data: {
$ \* S4 K% _7 G) l1 h* ^. \ - url: 'http://www.runoob.com'( P) u' z4 z3 u, Q- y2 O
- }
4 r5 U9 G: p" f1 w, @% T2 s - })
& ]8 ^; K) h$ c. A - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
- ~0 O! y! ?0 Z
- <div id="app">
/ s# W9 w2 B3 X# x8 _3 ^7 S: [' i - <pre><a v-bind:href="url">Vue参数</a></pre>
6 e3 u" M# I% Q: ^
9 u p: }, c) N `0 u, P+ n! Q- </div>' e1 }5 y: n5 w( z' Q
- ' M$ }# B8 m1 u8 W% S" `6 h
- <div id="app2">
0 C8 @* y2 H b( h/ { - <p v-for="val in arr">$ |- O; D2 y- ?, \3 P' J2 u) U
- {{val.a}}- ~ g6 k2 V( ]: {) z8 i
- </p>1 b$ J4 U2 K$ H& Z
- <a v-on:click="tap">点我</a>1 P' c/ `* n: |' K
- </div>" B) L2 r; y& G
! G% `' t4 h8 L2 P3 b; L- 5 D0 u- Y6 c! M+ ^: X
- <script> d0 Q4 r$ z" X$ z; d2 F2 z
- new Vue({
; E9 `9 a9 I- o+ H$ y - el: '#app',
# Q' Y% O- I/ n% C) l% o y - data: {& [* I2 ~4 H7 Q3 Y- M: l/ K
- url: 'http://www.cncml.com'5 X) A/ q, ~, ?# {( B, _
- }
" H. d0 E6 B0 }8 c# L8 T* X( t - })( Q8 F+ c; a# u1 e+ C0 e' \
- new Vue({% C9 U: q$ B6 | U
- el: '#app2',3 W1 a. p% t0 f, D
- data: {
9 K& L2 E8 K) Y& g8 I - arr:[2 I7 j j3 a2 I+ V/ O8 d. c
- {a:'bb'},. _+ ^) x# a% O9 `: `* h8 S
- {a:'cc'}
; F1 Q+ o; k- J" ?# K - ]6 M! `+ N# E/ S7 f0 O5 D: I
- },
7 [. S' k9 } y# o - methods:{
3 b& T0 r! i. x9 q* H" t - tap : function(){
' O% Q# \- x( h- r% i( C) l$ E - this.arr.unshift({a:'new'})0 }, ~/ p) U7 X6 u; Z x
- }
' ?: {9 o/ a( j/ m - }5 y; v# h, i! U2 b% [
- })# a. ]4 B0 B. s* h) t9 C) a
- </script>
复制代码 1 j( q6 [) Z* ?) v2 L. e
0 H, ] a* \. |; ~# ]
在这里参数是监听的事件名。
u6 n1 Y+ H7 N2 j* s/ x |