Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
' f2 H! F) Z4 L7 u - <p>{{ message }}</p>
% `5 [, k& m5 a# ` - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
8 I3 H0 t- t" z# A& r. B, c( C - <div v-html="message"></div>! @" ]' |" y7 g0 v
- </div>
% O) X5 X s7 J. A, L0 I -
6 g$ A/ w ?& a. g5 W' { - <script>
# V& Q4 V+ |" e( M8 S. Y0 d2 N" L - new Vue({
+ G2 g8 i2 W1 M2 @ - el: '#app',4 l j8 t. L( r
- data: {! ^. _5 F0 j5 M; _& o
- message: '<h1>菜鸟教程</h1>'
7 H, S& u9 V9 D: E - } ?0 A. }/ C3 U4 r( L" D# D
- })
" S8 E, z! o. Q- o8 g8 r, m - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
1 L- B% {! v, e* D - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
6 U+ h: d* ^' E" V& P0 E2 w - <br><br>
# w1 l/ ?! L, g$ ` - <div v-bind:class="{'class1': class1}">
# W1 S8 ?% P# |& q. s! \ - directiva v-bind:class
% {* K$ ?9 m6 M' z9 i. K( ? - </div>
7 J, j! T) a* V - </div>
4 ]$ t Z' y5 R9 L% W6 x - " m; P1 V* w R( ?* Y$ Y
- <script>
) S* z% j2 J+ n, h+ g - new Vue({
# ?) O; G6 L6 p. M- b, w6 F0 @ - el: '#app',' a" }8 k' q/ x( r
- data:{' Y4 X7 a" y5 B3 A1 _! A
- class1: false0 X0 y3 }8 }# x m0 N" v2 j/ B: l
- }. e2 L5 d6 I. | \; F8 U% V
- });
8 {' q1 ?! q* e9 B U/ U" Y' e8 w/ J - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">$ u4 C: w4 \) z( @) l9 ^
- {{5+5}}<br>% D+ g# l* s1 G) v [- j
- {{ ok ? 'YES' : 'NO' }}<br>
5 |7 Z4 G; h% Z& b& h - {{ message.split('').reverse().join('') }}- K/ f0 {! J5 _; Z4 T" v
- <div v-bind:id="'list-' + id">菜鸟教程</div>
T# B0 c, p+ Q) c# b - </div>
{4 V8 }* q( _ - # U! [" M5 k/ h# [! l$ [
- <script>" q+ N2 S5 _" _5 q, f+ H9 w
- new Vue({
9 `" V9 v8 b4 d2 B) |6 k& V - el: '#app',
/ L" O- x( a0 | - data: {
, U9 j6 O( r& f1 r, n5 c - ok: true,! |( u5 z1 k7 W4 x+ Y
- message: 'RUNOOB',
/ f7 ^' R+ r" c# v; F8 p - id : 13 ]; w6 [" z' q! o
- }
! S$ S1 j4 B* d. ] - }) [6 N( r$ @/ e! C2 p
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">/ ?8 I' y. L/ K& d, W
- <p v-if="seen">现在你看到我了</p>% r- [! C2 C9 I$ V+ U+ J
- </div>
x' p6 E& k9 g9 u+ i -
1 F" a8 r& X! a& K - <script>
7 R+ Q1 v& y B5 _ - new Vue({1 }5 y- w- S. T! o- Q) N
- el: '#app',
: c3 T' A, H# T; D - data: { Z. T5 h/ c5 I
- seen: true
9 N ^) h2 v2 U' d; D8 a; v - }8 m( M. E0 B* R" h. ], w% M
- })% J* e$ ?" Y7 _+ A3 b
- </script>
复制代码
4 o! V V9 |' H$ N0 [1 j这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
8 T: J' C6 J% x- f! Z - <pre><a v-bind:href="url">菜鸟教程</a></pre>) ^) M8 Q) J) N# c: q
- </div>9 j6 @5 Y* O0 I0 J& D, N, V
-
Q% X" ~9 x/ M+ g* I - <script>( u, ~' \2 i; t* C) {6 ]
- new Vue({, g! N4 a$ K2 [5 P: J$ a
- el: '#app',$ Z* o' n% g# v6 n, v8 }* ]
- data: {
( m) X4 l' [8 F: P - url: 'http://www.runoob.com'# o" e3 W0 d" j5 {7 {) V
- }
) P5 _" k# u* H2 T% l8 O - })( f" w/ E$ P# O. ]
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码 O; Z* R8 U f; \5 A
- <div id="app">
& @7 f& v" \/ o - <pre><a v-bind:href="url">Vue参数</a></pre>
* s2 X& h6 O6 W0 q
5 y5 F% C8 w) ~" x0 \' P) x" J4 r- </div>& m/ E% V' N( L6 p; P. j a2 M
- * @0 n3 P! L( N! j& _
- <div id="app2">) C; P, M! I, D6 S8 V, o, m
- <p v-for="val in arr">
! x1 G+ R( ]- n; Y( t: M+ z - {{val.a}}
9 M6 w& s% P V+ l, P( Z( ` - </p>
3 R9 M5 \! r9 f/ W* o - <a v-on:click="tap">点我</a>3 C S4 l, f0 [6 @+ h
- </div>
- v+ ]) `* W+ y5 i: p1 q @
, T; M* \% `: H" E$ [- + a4 F9 c6 S: O. t9 {
- <script>
6 H5 O% |3 T" P - new Vue({1 A, B$ z/ O$ n0 N' D
- el: '#app',) ?$ |# y6 b2 v" s4 A: Q. f. F
- data: {
; A. @3 v' D4 e4 ] - url: 'http://www.cncml.com'0 r2 h# H# o, s J
- }
3 K+ Y0 r, ^+ J - })( q& x% O, s/ [
- new Vue({' J3 P$ {4 e* P! @) B
- el: '#app2',% m3 e) h+ ^& o0 N+ d# N+ P
- data: {
1 ?/ M& a% D2 f' x5 u - arr:[+ K$ t1 p8 b+ x# A% v
- {a:'bb'},
; f u8 ?1 G( F, ~4 K; E - {a:'cc'}( f4 ^: w" C) c* L# w# _
- ]: e, P5 m$ Q% Y0 t
- },5 T% k1 _4 v o4 ?# L! S% P2 ^& [1 a
- methods:{# B# Q0 D( h! X* S$ f Y8 {
- tap : function(){
: s# l4 @9 D4 A }/ v6 I( q7 S - this.arr.unshift({a:'new'})
5 C$ L, h% i; _+ Y - }
/ t$ y. t5 Z- X y7 X; |% e% L - }
; U6 f/ s/ U6 P- q8 k' m - })
J2 B% F- l; H0 J: x+ Z - </script>
复制代码
" J4 J- r* q% I
$ H5 f% E; B; L8 q7 Y
在这里参数是监听的事件名。
0 ]/ a& v. ]8 z2 F0 a! W) ?" y |