|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
' r; Y5 d- \$ C t# Z' c) _ - <p>{{ message }}</p>: {1 I9 L4 w0 B# o
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app"># X- T( s/ \. `0 l. w7 w3 p
- <div v-html="message"></div>
$ e7 ?/ P/ s6 @3 K$ p% | - </div>
$ j( m9 ^0 ]8 } M -
9 x# y1 Y1 C8 ~3 d! l; M I) p0 _0 Y - <script>
7 p6 y3 I, z1 T6 t - new Vue({
4 Y# s8 k: X- b( R, u$ M9 a - el: '#app',% ` R2 ~7 ^0 e. }) W
- data: {
0 G) R$ D0 I# @# _2 ~8 Y - message: '<h1>菜鸟教程</h1>'
2 ?7 t1 m+ f9 G! L: k# ` - }& U* s# ~( b' A6 e4 }' J
- })
' p5 ~1 m V% Y - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">9 i `; W: [2 a$ g. j1 |% r
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
+ ]- i$ G* d. I - <br><br>
0 k# a* E/ [' @/ y H% @ - <div v-bind:class="{'class1': class1}">! S+ z* Q$ u7 O
- directiva v-bind:class
' _6 n7 L5 b% d( |! b - </div>
1 |0 H; I; ~ a3 ]& R! ] - </div>
: X4 p3 ]2 ~7 P. S* b3 B - u& I0 i2 P+ E7 C3 j1 i, m
- <script>
6 a$ s9 Q) [) x - new Vue({
( Z! U6 m' p; E" E1 B - el: '#app',
5 u: S& Z5 L. |# L7 m - data:{ y U% @- \# C+ d
- class1: false
2 P" M( d3 ^% y: X X - }
0 ?9 B+ z8 O {) r& Q0 y - });$ A, P7 E* A; G
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
) M6 _2 n$ ~7 U8 f - {{5+5}}<br>8 P7 K* Q9 d+ {% U7 r% q. c% w
- {{ ok ? 'YES' : 'NO' }}<br>* |. T1 c# L! j* w( c5 m) `
- {{ message.split('').reverse().join('') }}' |5 @2 m' U. N2 |3 v
- <div v-bind:id="'list-' + id">菜鸟教程</div>2 M) e1 U7 \) Y
- </div>
8 p( }, p7 l: Y/ n1 [) f -
W' N! v! Q% p9 Q - <script>
0 C3 p4 A6 B+ g5 e - new Vue({0 S; L) J3 p( q @4 y3 w+ t$ y
- el: '#app',
, K: Q0 U/ Z, I' _' E - data: {% i9 |9 `& E O0 k* ~, i
- ok: true,
% t: t* h% l+ E - message: 'RUNOOB',$ _: A* k# I; ^' v) Y
- id : 1* r# S, Q) f! s( s) U' L
- }# W! n2 G8 o$ A: r3 ?7 S7 e
- })
- H! M, |7 j0 k - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">; w: o) v1 ~* s7 k6 p9 E8 W
- <p v-if="seen">现在你看到我了</p>. n( _9 `( f4 M8 O$ c7 n
- </div>
) e$ X; p1 H( P J2 @. l. l1 T. d -
$ t4 ^& \& E& g5 a/ p: {0 @ - <script>
3 O% O: ^; o8 N - new Vue({* E" E; v3 e+ P, o
- el: '#app',( m% b0 y" E+ I7 B8 \
- data: {+ E, P+ R m# o
- seen: true W& t4 q4 M" R: p, x
- }
0 F3 B$ Z# x! s - })
0 q# @, I' k. p- u - </script>
复制代码
' x& E, X& L+ Q) ?, M& c3 p0 e这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
7 B' I, Q) U+ N! R1 X) U2 r - <pre><a v-bind:href="url">菜鸟教程</a></pre>
2 M d1 Y9 D! K3 a - </div>+ a# L( {) O* q: h2 F( v
-
k0 J" o# R: D. g; y: A, r' H2 W - <script>: b2 z0 s) O0 ]4 { R
- new Vue({
! ^) s% A. I* U, p, O" i* U% Q - el: '#app',
) ^! i: c* `: x/ z6 ` - data: {
1 N# X0 D$ Z, [3 D! y1 N - url: 'http://www.runoob.com'
! i' ?( Y# w/ ~ - }
/ i& k3 F0 g9 q- z+ T& T - })) U3 S9 U# A0 q$ A, K7 }, W3 k
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码8 b2 b ~8 `6 v
- <div id="app">
1 I1 D/ ^9 m& E; \ - <pre><a v-bind:href="url">Vue参数</a></pre>
* |) C t* q" d; D$ J& s - 9 | X5 | `) d, N7 P2 c
- </div>
0 l) v' S6 C' w8 Q& Z C
6 @: ? d3 X; H: z8 j. i# m& r# e- <div id="app2">8 f, [8 ?: b: ~$ o( o7 D% A9 s+ [
- <p v-for="val in arr">
8 [$ a( f) [2 Z - {{val.a}}$ O- z5 t) |, _+ Z% N3 y9 A
- </p>6 Q T. m: X. m2 ]3 d
- <a v-on:click="tap">点我</a>1 S0 }& _" s" e+ x
- </div>" K" {$ ?$ \. a" j n( M. ?8 w" ?* B
) y6 O& v0 I" l7 w3 b- % T& M2 O+ e. D; i* x
- <script>
' H% s; h8 _, \ - new Vue({
1 }- n& f9 G# G - el: '#app',. F5 b6 d4 P; L9 u
- data: {
3 z" a v) n1 z: J- ^: Q8 ? - url: 'http://www.cncml.com'' `# b- _! `1 Q; z; k2 ^5 k! G' z
- }/ W" ^1 ~0 A6 G( [
- })
, I8 r& u1 _& z( W4 y, @& |6 R) h - new Vue({
- n9 G' g) M+ [" \ - el: '#app2',
2 ?5 {7 S6 z7 Y" D6 H - data: {
4 ^" k8 f1 o8 K, z' t1 u - arr:[
# W# t, y; P! ?0 u) k; }9 g; q- } - {a:'bb'},# v. K2 v" W* L/ C N+ v/ J( d
- {a:'cc'}8 Y8 F+ z2 Z; ?$ M+ [5 ]
- ]
3 q2 J2 @6 o5 s6 C - },2 V& M @+ e! H7 O6 }; G" G3 O* y- t
- methods:{, G- h2 {1 J6 ~( Q" B- G
- tap : function(){7 G, _" r* _4 a1 J" {' q
- this.arr.unshift({a:'new'})
8 R' M5 f `; Q7 b' p% w7 x$ t. ? - }
& o: j, m* H' t( X6 e - }
# W8 T8 a* n6 K- u - }); d5 n8 W& A( x. Z$ Z; _
- </script>
复制代码
0 s+ h; S7 O6 R' G. X) {' x( }$ F9 }% C6 e
在这里参数是监听的事件名。
- T, s3 v' \+ K- K |