Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
- Q! J, q- _5 A% g$ V/ E - <p>{{ message }}</p>" C$ o+ p7 |7 l# A* }* K( H
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
' {$ X, C9 _/ t r: C+ | - <div v-html="message"></div>
/ Q/ G+ W0 ?' Y7 y$ w/ t - </div>/ u8 p t) d7 S0 T2 }$ _7 D/ t1 U& H
-
4 ^6 D: |) R, o9 V1 D - <script>+ J/ B6 T5 s- T5 g7 M( u, Y
- new Vue({$ F! H* B8 u4 S: C4 C3 ^7 f
- el: '#app',+ L; T5 M+ T8 } O9 Y u" `
- data: {0 I: F" G+ z9 g3 U
- message: '<h1>菜鸟教程</h1>'
: I3 U5 Z; s p5 S! `4 X - }
* F+ o0 R$ P2 x# J7 F1 Z6 i - })- o1 D) [1 ~: o$ @" }+ U. v9 b
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
/ j" w2 m. e' e/ [6 M. D* ^ - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
/ Z2 t- P* ]) E - <br><br>% u% q0 D0 i1 L! c2 w% n
- <div v-bind:class="{'class1': class1}">
7 q6 k0 V) |) k6 _ - directiva v-bind:class
% g4 M$ G. C9 R% W, F - </div>) P* h2 l' w- G
- </div>- m, j( P" f( ]: [
- 4 W) F5 _+ f# Y. f5 h0 G% p
- <script>2 r1 \- r. ]2 I
- new Vue({0 f2 J Q2 G; q( {. o4 l0 o" f. c% m
- el: '#app',; v7 w- p2 ~2 h j' y0 Y
- data:{) U& _2 Y2 T& c! N
- class1: false* h- n4 k9 H+ v) i% ?4 H C
- }0 e, w& r0 |0 M# W) S8 [7 m
- });
7 L+ q; U0 ^8 x- M - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
7 ~( ?& j" U _- X' V* [ - {{5+5}}<br>
$ ^7 d5 c2 x+ Z* D E( u8 r - {{ ok ? 'YES' : 'NO' }}<br>
" P; R: X: Y$ L - {{ message.split('').reverse().join('') }}
2 {5 Q* o: R' x - <div v-bind:id="'list-' + id">菜鸟教程</div>
; {0 w# G7 K% W6 l - </div>
X, i) v! p7 W+ X1 I* _1 G0 L -
2 s9 Y8 R& [. g+ q. Z# v - <script>) g/ g! K- L8 N' G0 n, ]7 X9 z7 Q
- new Vue({9 R" r k4 K. S3 Q9 Y7 U' X
- el: '#app',
+ N$ Q7 B1 d3 l3 O+ l: R2 Y - data: {
) B% U' X( p; M V- p, r! a2 D - ok: true,
- j8 d; l% h! A" t+ ^6 ^" ^ - message: 'RUNOOB',. c* C. R+ F: R& _& i
- id : 1
* W7 [; {" A; O9 W6 K" P9 ~ - }6 }, d* J( v% f7 o( v1 n7 o% o
- })
$ S6 i* V; y: v* ~ - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
3 n6 e8 D4 i# {6 m1 k1 ^2 @( { - <p v-if="seen">现在你看到我了</p>5 @/ P5 D4 z1 m. E. s" y* d% T6 ]
- </div>% Q2 u1 ~% \2 V, @
-
% t" a+ D9 c7 h - <script>
3 V- e/ t9 G* y l; x4 E - new Vue({
4 X! a" M) U! `9 E - el: '#app',+ R2 B$ |5 \' x4 J/ z/ Z( ^
- data: {
5 Y/ c8 G. z5 d3 R$ G' a - seen: true
) y5 m( _2 f9 J, X! z% v9 U: [ - }, S6 x$ _9 ~& m p4 i8 T, Z3 X
- })8 {( X% Q- [" q
- </script>
复制代码 4 C9 K% t+ r9 x# ?. k
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
[1 b3 U1 h# ^ - <pre><a v-bind:href="url">菜鸟教程</a></pre>
& x7 z$ h% N7 D" A6 q: U1 f - </div>
) J* M+ W: B; F. z -
$ A8 ?3 L* i+ ]9 c8 X - <script> M. J, {$ c7 D8 U6 C q# ^6 l% U
- new Vue({8 k5 Z/ m" x! M0 D" D2 f
- el: '#app',0 I% K1 w. X% x: z. R0 j$ P
- data: {
, h0 z- r, [. j# N - url: 'http://www.runoob.com'( R; x& j* {! x8 L% I d" u. s
- }
: h# c9 ?" w, W6 A# b. Y - })
- _6 N' G! M2 {. a' {. w& m$ u) { - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码! s& K# p- c# h& s
- <div id="app">
! q3 r& ?- _6 p. d2 L+ z - <pre><a v-bind:href="url">Vue参数</a></pre>
# x1 l* t2 ^4 v; g6 X3 M6 b - $ [ H) i! {8 l7 N0 _
- </div>, B; a9 c& u6 N' p' i- `
" N2 d$ i2 `) q8 g- <div id="app2">
( W0 f7 r- [/ k$ s" F - <p v-for="val in arr">0 o% c% M/ {" N2 Y/ \
- {{val.a}}# m/ f! K" a" ]
- </p>7 b8 H, n7 F' U5 @6 `) m& i
- <a v-on:click="tap">点我</a>' Y! o7 ]# a. e* V1 K
- </div>
7 }% u. R! \4 W
B2 B/ O5 Y2 h+ [ M; S- ' K# L6 e* u! M0 O! w/ [
- <script>
$ f7 d: v2 R' n& e) D - new Vue({3 c/ K! U F5 q( |* \3 \
- el: '#app',7 \9 c! p0 v; P" P- F5 c( D% h
- data: {
" T i) \; l# p1 K+ L& I8 g( k - url: 'http://www.cncml.com'
8 D$ N$ Z1 ^8 y4 n - }
$ n( J- t5 a$ |; F. u5 c0 O - })$ H* g* P; M" N1 k+ H- D
- new Vue({% Z# i5 `! J% c! \% f7 J8 _
- el: '#app2',
0 S D( B+ U9 }/ f8 O" B - data: {
9 d& c$ d3 _5 T# [- L0 w3 L - arr:[/ P' i0 _& ^3 a2 Y! l3 J
- {a:'bb'},
, @( @+ p: l$ [7 y - {a:'cc'}
3 |0 Y& ^ k3 }' A+ t - ]4 g, n4 b7 f, E9 r1 F- K9 j2 F! O
- },
3 ]2 N" L; v7 T4 J6 n$ P - methods:{
1 Y. r1 N* G _7 f4 b6 p- A - tap : function(){# c1 a0 l! O5 j1 s& [. t# s
- this.arr.unshift({a:'new'})
. e+ W. c# D. a! c l; R1 F - }
- ?( {7 A: I# k' p - }
: S; y7 P6 k" T+ h - })0 J# n+ \# L& y
- </script>
复制代码
8 j# S, Z# t# M' D/ X+ g
+ U) Q Q$ K* ]: g& }3 [6 [
在这里参数是监听的事件名。 & i# l |/ A1 {2 }
|