Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">8 w% k" N6 N6 U: ~1 F+ G
- <p>{{ message }}</p>
% s3 H& F8 e: V3 _4 Z7 U - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
) b: l* ^$ [7 ^0 `) v - <div v-html="message"></div>
8 P0 ~9 C1 R% ?! X! p4 Z - </div>5 U3 V4 C& X) b! _1 _% P1 J
-
g/ F/ K2 S9 D& p! \ - <script>: j1 d0 ~2 d8 y0 E$ e+ T& q, |8 F
- new Vue({
& n0 e1 }. A9 n" t8 J - el: '#app',8 ~$ A) N2 H" e" h# H/ ?
- data: {
$ a2 I3 Y8 O, w6 C) r - message: '<h1>菜鸟教程</h1>'" e2 k' p' r' z" d% |4 J5 T9 K
- }9 B0 t( h( b f% t9 j5 {7 R: A
- })2 b4 T# S9 n* _5 t$ M) Y0 i
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
- x* T, N) E0 Q5 ` - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
/ m2 K! s; z7 `+ |5 t; h% }5 y. R; w - <br><br>
6 W2 g. R2 z& Y4 k* u6 k7 @) w - <div v-bind:class="{'class1': class1}">
8 m% D3 }5 |; ~. S+ X - directiva v-bind:class
9 `3 `. X& j: r6 t+ g d5 y - </div># \' T6 M& H' O# J! w0 V
- </div>
: S& f! g2 X. ?- r" q O - ; i+ c" r/ s7 b* W- ?" M
- <script>: Q/ e+ ^* D. ~# C
- new Vue({
5 _+ _% J4 V, r# [5 ?; B4 ^0 ? - el: '#app',
$ L5 z+ K, Y4 W6 d9 T - data:{2 H- `* x& R! u/ O* i! _
- class1: false7 @, K: t: K# M# |$ U* ~7 @! e
- }, z6 \; T7 ~) q& R0 {) q- J0 `
- });
1 X! u. B, [* W" A: g - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app"># [$ t( p* f0 ^- i
- {{5+5}}<br>
* m" Q. C. l, s* w - {{ ok ? 'YES' : 'NO' }}<br>) Z+ |% P1 A; T! D5 t: L6 g G
- {{ message.split('').reverse().join('') }}
! f% B: ` F+ P- u& D$ e# I9 R - <div v-bind:id="'list-' + id">菜鸟教程</div>+ F4 Y2 h+ L6 ]8 x- _
- </div>
% s# e: f6 y& |; t! C, ~+ J& { -
% G d' I! D5 ^+ i% f' F - <script># V9 @7 @7 N8 [* u+ ?
- new Vue({
! C1 y1 S0 s+ s3 a - el: '#app',' ~2 a; x4 x8 k+ c
- data: {
, R6 n1 Y4 C D - ok: true,
; z6 s8 Q- _7 M1 U7 m2 r - message: 'RUNOOB',
+ e4 Q4 @" d4 e# J. g( r4 m - id : 1. B' e: t+ w3 F1 u/ M7 `
- }7 I. w W3 j, o6 J, h8 J1 D
- })
, u/ Y3 H8 D" w$ Z7 f4 g& _ - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">- W- p e Q% A' s% R: |
- <p v-if="seen">现在你看到我了</p># K4 f! ~/ w. u: {" ?3 m! F2 b
- </div>
% m( K: p4 P. B& a - % M ~2 m, Z- J/ }
- <script>6 J2 U1 L: ^7 p4 z6 u# P2 q
- new Vue({% h9 C H, S9 x2 e
- el: '#app',6 E A5 q( b2 [4 }
- data: {2 A, ^4 n2 `$ `5 e4 [6 D
- seen: true
+ [% B1 U/ D0 Y4 { - }
. r+ I, @8 }8 _( h" d9 C - })8 _' p+ c* G0 t4 z) a0 g
- </script>
复制代码
1 y k0 G" r, F) c& O/ ]1 `6 z这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
& J9 w1 K/ N: b - <pre><a v-bind:href="url">菜鸟教程</a></pre>
6 t9 }0 k |1 |! y% z( Q+ L0 T - </div>
2 Z4 s [) h; W5 n -
3 F: m8 d+ R. a9 i% }/ p, v+ m - <script> U: ~) O1 D4 f, _$ v
- new Vue({
# ]- \: v3 P7 N6 q9 E9 T - el: '#app',' M; J ^ z* q8 g5 G, O
- data: {7 R" w1 J( [. D
- url: 'http://www.runoob.com'
- T' m1 e- [" a' x - }/ `7 R! P ], u* _' Z2 c
- })
5 b( W$ B1 ~' U) t" K4 p& ?) ]" M - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
3 B1 X9 q- S3 r Z& u
- <div id="app">
1 e! S3 Q- I& E) U. T, f u/ z* Q - <pre><a v-bind:href="url">Vue参数</a></pre>9 A; l( D7 ] r- S# h$ s
1 t: y( h( p! D0 f- </div>9 [1 R' d8 A; o5 W
- % x1 n1 b& s0 d8 o7 \# x6 X/ [" Y8 J" W
- <div id="app2">* o6 o$ d$ S. S5 X% X- e5 a7 a; h
- <p v-for="val in arr">
- ]' C' I Y. M# ~) V2 P - {{val.a}}
4 _% ~" W/ D* k, E% `3 k( r - </p>
: _9 ~, D2 z3 _! ? - <a v-on:click="tap">点我</a>1 n( E5 v6 p; `" j5 r% @( x8 n$ c3 J
- </div>
( K5 N' J* \6 k6 j% I- H, m
0 k5 ^+ H5 p1 E- k) J9 h8 ]& H$ [+ q
- <script>
# J( x7 c. P4 p w4 p5 p5 G - new Vue({
* r8 c+ ~9 t, e0 z - el: '#app',& x. T \8 _1 P1 Q& D
- data: {8 Q- C) O+ L. V% k( v) V F
- url: 'http://www.cncml.com'* l g/ U* s" h3 t/ w. L
- }
+ ^* C3 k' \' Q4 V* k& ?% k - })$ Q ^/ c) |# R+ g0 O( y5 O2 I: G. C
- new Vue({) u Z; ~' C& A& |# k: ?: K- c
- el: '#app2',
9 A# w9 l, k4 S: Q - data: {% ~5 Y) L# |* p6 v$ \. r
- arr:[
& F7 _; C1 G' t( Y - {a:'bb'},
4 E' ~- }+ o& \ - {a:'cc'}) _0 v9 ^, I( B
- ]- l& G7 D* ]0 ~" `. ]3 M
- },
) }0 G2 @, v4 h' ~3 ~$ k - methods:{& F+ @6 H X6 Y$ p/ E
- tap : function(){5 J$ [4 p8 ?' ^/ c/ H
- this.arr.unshift({a:'new'})! a a, {" D; L+ o& l
- }
+ E0 ?6 p p1 a( f - }
7 J1 L; E' C! f7 l - })4 w* C; _. s2 F9 B
- </script>
复制代码
" A/ q2 x* P" E) X- v: [' f9 R6 {0 n$ R0 o7 E
在这里参数是监听的事件名。 ( r/ @1 B6 n/ Y4 V: T
|