Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
* {$ Y7 m- V2 Y - <p>{{ message }}</p>% q4 a) o w' q0 @& a
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">1 u. g* h, n2 `* S: ^; | K
- <div v-html="message"></div>& b% ?/ p% _3 E, e4 y. v
- </div>
8 n. C7 P# Y2 N7 }( Y -
# P, a o4 [" \# h! s4 \ - <script>
4 Z4 i0 k* O$ l" _2 R - new Vue({% v4 d& P% D# d" `( ^6 I
- el: '#app',, D2 ~) K7 A! C, n
- data: {
. `$ M% {- W; g2 b( C% X) n - message: '<h1>菜鸟教程</h1>'
. K9 M7 |' W0 J- e - }; G# y/ c& i# b) h5 n
- })
0 v# d3 D9 L* j9 Z - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">; m1 h8 G/ m2 G6 U/ U$ Z' q N
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
( U& E& S q( Y; j1 G" D: o - <br><br>
, u& e/ e, e$ B4 }. d. _! z - <div v-bind:class="{'class1': class1}">
7 k# C6 M. a( J$ V- b - directiva v-bind:class: F: R0 e7 f! [% ^1 s* i% u5 I% b
- </div>
( N2 L/ }# Z( o7 H2 r - </div>+ \7 Q( A' I2 y u: ^
- 8 p1 B* b' `+ d `8 q
- <script>
" C; u# g0 {# e0 }% m. }( L6 M3 n; | - new Vue({
, t) }. M- I, x' a# b" o- v - el: '#app',
: z" g& b8 S* M& P. p - data:{4 i6 ]8 o/ f6 _9 S9 y6 y0 W, Y' H4 [
- class1: false! E* o' y: ^$ `1 y M
- }
7 Z) d3 d8 {% W9 D9 A5 Z! t - });# f! m8 ~; O+ O5 X2 Q& ]
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">7 S. ]2 y% O; z
- {{5+5}}<br>
$ @/ c+ n. g, ?2 ? - {{ ok ? 'YES' : 'NO' }}<br>
3 ^/ z) N) U7 B - {{ message.split('').reverse().join('') }}
4 s* |4 T$ H9 a4 V& O( c - <div v-bind:id="'list-' + id">菜鸟教程</div>) t* y* s2 w* }& _8 v& Y" J
- </div>
j3 {& G( b. g- L( H - " l: b( b. ^2 ]3 c/ B' I( E
- <script>
: U4 G: J5 f1 a% J+ E- e$ ~, k - new Vue({; @) C, M! h0 \$ x" v
- el: '#app',
( O C& k/ C5 @( A - data: {
7 ?7 b1 n) h2 K( N J - ok: true,
: s* D5 ?+ `2 J$ n0 \4 S& m I9 U - message: 'RUNOOB',
7 ?. a2 u y' q - id : 1
6 ]1 a) k& Q% z - }2 M! f4 u) \. U |) a
- })) M' L5 b) C" S
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
" }' L5 L+ Q% F$ S( v" ` - <p v-if="seen">现在你看到我了</p>9 B/ o# ~5 E3 j9 t3 y7 H
- </div>
\5 I5 f h! L6 [; @ - ) }; }+ d! u- N* k4 O' B
- <script>
5 X& M- T3 ?5 R8 @! C8 J; g - new Vue({
- |( E; J$ k5 @# x7 C - el: '#app',
r9 C' |6 i7 u - data: {
# r, e( [* U) ~! M/ a - seen: true6 {$ z5 ?. O4 w- @, F
- }
1 X7 F$ O$ k. g - })7 W$ _6 ~# j! G% t+ N
- </script>
复制代码 0 S( u& L0 ?$ u9 s1 |0 R3 @
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">0 v2 i0 v4 Y$ F- R5 b9 L
- <pre><a v-bind:href="url">菜鸟教程</a></pre>( h: ~& a4 Z2 x- R0 c8 F
- </div>2 n- ^9 d: u, `, u4 O
-
) p% |) [5 p2 M) e1 m- v - <script>
; A+ d3 c/ i) t - new Vue({& s1 a% K! H7 p: c
- el: '#app', J+ u6 ^- W5 G& q. ]1 k
- data: {% @& B# R) k( B9 z$ I5 \
- url: 'http://www.runoob.com'' |: c9 w' Z) v0 F, w. e3 N
- }$ G8 L, i7 Q+ W% i5 [
- })
+ S: h: H( m$ d: J4 q! g - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码" u+ `, ^6 ?$ T/ f2 t
- <div id="app">1 C3 {$ V' }9 k8 k
- <pre><a v-bind:href="url">Vue参数</a></pre>+ X8 \3 H8 _( j; V
+ z: u* }0 ?5 s1 J+ e& [0 A& c- </div> \- a$ ]* c- z- ~, \ R: ], y/ G
7 e: `1 p. S9 C0 s% o- <div id="app2">
6 y2 v0 n" }% [( C0 Y) D - <p v-for="val in arr">, l; _& E* Q4 z- F
- {{val.a}} {$ |" b z1 K) B) X# |
- </p>/ D/ X5 K; B' V3 h) G
- <a v-on:click="tap">点我</a>
* l" |! r1 g: y( u4 d0 e5 V K& r - </div>7 G! I1 c: N# c9 W1 E! a0 q
! M$ G! p. I: _0 s9 S( e( n
0 [9 ^3 M7 N& T: ^- <script>
, f8 J( k5 n7 A( S) { F - new Vue({
: J1 d! x3 E8 {9 n ]4 B- v) i - el: '#app',
5 W- X, e3 d: } z% v7 j - data: {
: M8 i$ _/ p/ U9 I - url: 'http://www.cncml.com'. _, T2 p$ c! ^# ?7 m/ l- _
- }
6 E7 ?' h+ S& S; \0 \& f - })/ p% n1 N/ m2 o* X, C3 F m
- new Vue({2 X: G8 E% e9 b0 p
- el: '#app2',
- c2 k: f) o3 |: f. s% y0 k - data: {# q$ H; n/ y. g4 o0 \$ F
- arr:[0 F9 @* _+ L% N
- {a:'bb'},
5 H, y5 B: \$ ]+ K% S - {a:'cc'}6 ?4 a- e4 b8 ]! N5 { r
- ]
0 }' m! T6 \5 ?* x0 W - },
4 h% ^ l- i! p- @# x( _) L5 T8 x8 \ - methods:{
- t. ]2 U* X8 r2 x: e& S* x) n$ y - tap : function(){3 i" n8 A' F8 _
- this.arr.unshift({a:'new'}). z5 c, R- |3 |' U
- }
3 w3 O: {3 v( H& I4 W% f7 m! F( i - }+ X( H0 {- D1 ], |, i; i% q. }
- })
# k9 B2 W& @; U% k1 K) @ - </script>
复制代码 " q6 A4 C3 ^+ H! i; N
# c* o( W( s+ m; c' f- U0 Y
在这里参数是监听的事件名。 1 j5 r0 z- x% L3 S( ~
|