Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">9 m. w# [$ e8 H3 j+ u1 ~$ i
- <p>{{ message }}</p>
" P) `! q, x6 @* m - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">. k' |6 C1 I1 z W
- <div v-html="message"></div>
' v: x. y _9 m9 g% J) g* J - </div>
3 Y# E% z3 B" g- g1 j7 H - ! z5 c1 ?! f. k3 Q( c" @4 e
- <script>
8 g2 v1 s% b* h6 G4 T - new Vue({
& }/ s* ~* v( ?+ \ g$ a1 i, \ - el: '#app',; {6 J# b1 i: m, _# J
- data: {
$ Q+ \! N2 G. } - message: '<h1>菜鸟教程</h1>'2 a5 N7 E9 G6 B7 J
- }
' p( C' L6 ] t9 D - }), L$ J% I' X( S) J' l! v
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">& I9 B# Y( J* Y7 S
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
( @0 D; H& w- P) b - <br><br>6 o8 N' P6 y- u: |- x
- <div v-bind:class="{'class1': class1}">
" D2 W/ L4 p; e, f, A8 j - directiva v-bind:class
( F- W' B/ E, h: J* l - </div>
; b- u: i+ e, r6 v - </div>
- m5 V9 U% m; N' G -
7 p* D6 }) _6 L( t% k5 k - <script>
+ q, R5 q+ @/ F+ D - new Vue({' K S7 Z8 \* W
- el: '#app',
$ T7 _% X; }, S# z. q6 p - data:{( i- m3 l K7 ^/ S8 k+ R. ~" d) S
- class1: false1 o: U1 z4 y+ [3 G I* B2 q; X# m6 S9 S
- }; k0 u; U4 ^, p5 C" v0 c
- });% f Z( C% G- M
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
5 G) {* N. j4 o5 ` - {{5+5}}<br>
0 f% o! k- Y, Q, @- W - {{ ok ? 'YES' : 'NO' }}<br>( r/ q3 ?2 k2 v+ Y
- {{ message.split('').reverse().join('') }}
6 z8 j4 u3 c# Q - <div v-bind:id="'list-' + id">菜鸟教程</div>" Y! |; E% i6 L1 b. L+ l
- </div>9 h: {* a A; L7 b
-
8 K) z7 H* W3 u- u7 w" S+ o - <script> b6 o) O% m2 _/ d
- new Vue({! T0 W! @* E' v
- el: '#app',
' L4 P7 e( C* G; S5 K - data: {
% P- P2 S0 T/ {2 ?& N9 v - ok: true,! a% h$ `& k4 H0 E8 ~) R. \
- message: 'RUNOOB'," M5 G% G1 D- |2 m7 ? Q
- id : 1
# |$ L8 ^ C1 \. I% D0 Z4 G2 g - }
' g3 L& K0 Z i2 v2 R( X - })
{8 z. y5 j1 A+ @; K' b - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
, C' Z- W% T& A* b - <p v-if="seen">现在你看到我了</p>
" L0 t; F9 Y* r4 u1 Q+ o - </div>
! `6 x, A' S" |% Z- I- _ -
( S4 V/ }9 P" n& B1 h+ c - <script>
( _: u) o' [/ c3 k" f - new Vue({
2 I5 G) S% [8 q7 L) P3 q - el: '#app',
; x4 n& r/ V. a6 J3 l% ^5 Q; Q* w9 j - data: {
5 l3 K& ^2 ] }4 S7 d& f O - seen: true
' n# _2 B0 v! t& _/ D3 U - }
. o7 ], R) U* X2 I6 U - })
3 \7 Q1 T# l" ]; }- q - </script>
复制代码
% N2 g: T) v7 M, p这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">$ @1 n, ^1 O$ v' g/ t1 n8 ]
- <pre><a v-bind:href="url">菜鸟教程</a></pre>& L# |$ h T1 X) K% `, x; H
- </div>7 R/ M. J0 m9 h+ V- U. ]+ N
- * d6 }; e2 F @
- <script>7 S) v9 g: _7 V' M5 m
- new Vue({
/ E/ V/ a% S* T- y& _ - el: '#app',/ W2 e) Z1 {6 Y, `: U$ K
- data: {
/ H$ q' c! o' S" H" ^4 K - url: 'http://www.runoob.com'+ D/ ?$ P n+ x* {( R3 c
- }
" p* d+ y* K9 ?& O6 `; K - })
! B5 I* z q+ Q8 k8 [! E7 z - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
* j8 |3 S/ U# Q# @' b0 }( \
- <div id="app">! S2 W5 z# _; z2 Y9 _
- <pre><a v-bind:href="url">Vue参数</a></pre>2 C! j. @: R) h; `2 G
- & V& f' U: V- L$ B3 i
- </div>" r- }0 u# r M9 Y( l* A
- - m& n6 @4 v) V1 {9 G
- <div id="app2">" d: R% z3 }8 ]. z1 p: K
- <p v-for="val in arr">4 X) f$ n5 R: L5 e0 X' Q- o
- {{val.a}}
0 _+ h7 F( }. d - </p># L- l" k3 E+ r0 v) J) ?
- <a v-on:click="tap">点我</a>/ s& @2 v- |6 K( ^/ Q
- </div>; n! M0 k( P4 f# V) r
; O/ J& I2 F! f4 [& W! ]
) p2 Y! [1 S9 G6 r! G" w- <script>
1 S5 i* K3 l+ j8 ^ - new Vue({
# Q$ s x9 U; m5 d$ I - el: '#app',
4 a, ~: d2 f1 t - data: {. r7 C/ K7 o' Z
- url: 'http://www.cncml.com'
8 }6 M$ Y v5 @, | - }
+ P& ^/ o- `9 d B - })' l5 [4 L9 L N+ g. S* x! d
- new Vue({
/ o8 S5 X; c Z5 j: z7 g4 D; I - el: '#app2',
& C9 _0 P& m! R7 w: x - data: {6 C1 U2 f y2 ^! U* C2 T
- arr:[
$ @4 ^/ \# v' L5 [* @' n+ q& R - {a:'bb'},% |, t4 L3 g5 L
- {a:'cc'}
' o' [: d6 ^. X - ]
6 i! b4 l' T S! g5 o0 K7 Q2 ~ - },: {9 W d4 \* ?8 k
- methods:{
0 Q- p- @1 N# }) A - tap : function(){6 R) S2 B; d% [9 J+ U
- this.arr.unshift({a:'new'})
1 D) r7 e, s/ G; a c3 F; L - }$ a& p; z& H ~& c! i
- }
" `# Q! g7 b+ y6 L8 r8 v* O - })
5 O$ j3 h7 n! X2 H0 n - </script>
复制代码
/ G$ e7 W. _+ O m1 D, L5 V7 c- E
8 ?+ x) H$ i0 f5 g# i( v+ @
在这里参数是监听的事件名。 $ P# ?/ Q" W1 Q, t! `. C8 ]
|