Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">" _9 I0 V( \; @6 a0 B: Q
- <p>{{ message }}</p> v5 N: w5 E4 Z/ u7 R2 R
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
, G' A B8 f" u W# g6 h, \; ?. @ - <div v-html="message"></div>
3 G( | h" a8 b, J$ V0 z* x - </div>
n. C, e" c* k+ b -
2 {. C, F: t9 I# ] - <script>$ f4 y% r L% ]& w
- new Vue({. k- [; N0 L( v1 x$ S9 B6 c
- el: '#app',7 E4 a7 M0 ~* i$ D3 _
- data: {
+ p( }# i) j3 R) p - message: '<h1>菜鸟教程</h1>'
& `! F0 Q8 I6 v- ~- P - }9 u' S6 |+ a8 }7 L
- })
: {9 J. Y" W( e$ Q Z) U& A7 j* Y - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
! [, x/ B1 Z k6 Y* O( V# j - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
+ W) c2 T) Z8 Z - <br><br>
3 ]7 g& P! |% W# `3 Z - <div v-bind:class="{'class1': class1}">: i, q5 R+ x. |6 Q! a
- directiva v-bind:class, }9 ?" Q8 z8 w3 w0 R6 l r
- </div>0 K, o- J( `8 w# L
- </div>8 m& x6 |. f1 L0 Q; ]. k( H1 q
- 0 c5 M2 P8 R* X8 e6 h! p
- <script>
( }3 s4 d4 l; z' a6 z - new Vue({' l9 [2 t& p W" @4 q
- el: '#app',8 l# {* x" L- G: R; A
- data:{
# V( s: R* @$ j: z' V - class1: false
9 b* {2 v/ N- H8 C6 h - } P6 |6 R( R" s
- });
1 J$ d/ P) v- ?* @* E0 w - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">0 M0 C! Q) \" z1 C% l) ~1 o
- {{5+5}}<br>7 [' Q/ s7 b8 g o
- {{ ok ? 'YES' : 'NO' }}<br>
% m, \3 W6 J1 u5 g4 ^6 x - {{ message.split('').reverse().join('') }}
) i5 Q0 G. |6 H& X; }' z2 @ - <div v-bind:id="'list-' + id">菜鸟教程</div>
. I8 ~# X3 G9 {4 } - </div>
. E4 @. ?% W" h1 y, x+ q - 9 X1 V h) e: `% s
- <script>: g% P: U9 v+ A
- new Vue({
: o T- B. n$ A; c, x- \ - el: '#app',
2 T5 A# ~2 M& `, I - data: {/ g: p% W5 t+ ^+ L! m H) x
- ok: true,
8 c1 ]$ N5 o t) j( t+ T0 _" } - message: 'RUNOOB',- L# V; J0 \. W5 _6 Z$ `
- id : 1; J0 q0 M; u+ O, ~3 U; G% ^. v% N1 _
- }1 B/ B: l9 k. O1 h# y" T; I
- })
1 {- K( l( ~" f - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
* ]0 D2 q' u* c - <p v-if="seen">现在你看到我了</p>
; s5 m# Q( N% S3 q - </div>$ T- j! B/ [- ]
-
6 N% M4 P2 i% K$ b0 c - <script>' B0 f9 W# \! _0 I! M% C7 j; i8 m
- new Vue({# h+ ?8 ?3 H: I$ v4 l
- el: '#app',
: r2 ]- ?) ]# h; [ - data: {& U9 W* K! h7 w1 r' v! H c
- seen: true
# l6 l7 C: W# d% [; r2 W- R - }/ V0 ]% W# `9 K0 P6 q
- })
I* D( `0 K. i - </script>
复制代码 1 d8 H( N& b# [/ }5 F3 Q
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">! B# x& T/ T. Z0 }' E
- <pre><a v-bind:href="url">菜鸟教程</a></pre>
g, ]! t2 Q4 M - </div>2 {" i: I% A6 C( i
-
- J2 P j& b8 ^- }' Y) e' R - <script>7 P. }8 g9 H' b7 E4 \, U
- new Vue({
% I6 t6 G$ U6 z) C - el: '#app',# e/ V. P' M' s& q- w
- data: {$ K- x# ?0 Z& }8 K2 s7 y$ H, h
- url: 'http://www.runoob.com'1 D9 K& i( u/ [% ~- y. X5 \4 d
- }
5 d+ C% T! \ M* M$ q4 `; m7 N - })
' K* A$ k. u* z9 R. p5 T1 e2 y - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码) d1 b' i4 q8 l! U
- <div id="app">
4 A( w U: O7 q1 \$ d7 C% w - <pre><a v-bind:href="url">Vue参数</a></pre>
5 K8 V: x: | F4 w% Q
+ l8 _8 o7 s0 y& C* i- d- </div>
1 w1 N# l4 b$ `1 R+ q
3 }" l- Y1 o# [& \6 d$ O/ @1 N- <div id="app2">" y: z) R% |3 h
- <p v-for="val in arr">
( x" X ^) L* J8 U1 `! X$ M - {{val.a}}( N8 V, l) a1 V1 h+ j/ X" [4 f5 T; x
- </p>
& i9 J1 q; R' l - <a v-on:click="tap">点我</a>
" g+ W3 w; S4 F0 e& p7 i+ J - </div>: X% _/ [2 C9 y! X$ L% {. |
( a& ?4 z0 S" W5 ~% T5 o
$ `6 a% A9 W" }- <script>
# B( ]' b" a3 |8 l* H" t - new Vue({
: f% D; x) e" o - el: '#app',4 ]# [3 A/ R. R7 l, u0 c
- data: {
, O; D! W1 K( y: |) _- K7 ?1 j - url: 'http://www.cncml.com'" _/ Q/ ~2 j! N- ~3 n( _1 U
- }
- z- c& l& o3 ^! B - })
% H! N# \( }4 X/ H! a: s3 @; Y9 w - new Vue({& s/ |/ y1 g w, \
- el: '#app2',
) M6 O8 ~3 B& i - data: {' L0 t- K# ^; i; X4 j& \# R
- arr:[* N J. \7 `0 d* j% x9 I' s9 s+ P
- {a:'bb'},
- ~% _1 C% o, }+ m, Z' U - {a:'cc'}
8 e, I" L2 P) ~/ B8 j H# T - ]! L( x3 a n( D& m
- },
: H* P* t$ g! s% C8 K2 ` - methods:{
7 ]2 X# M' j6 I; `' T( ~ - tap : function(){& U: W# P6 S3 X. N4 A2 O
- this.arr.unshift({a:'new'})
6 k. j7 X* m& P c. i; _' ? Q - }" p8 i9 `6 |2 b! m8 Q/ L2 @
- }
7 I6 u6 p% Q! R+ w7 R0 B W9 s1 U- [ - })! b( h+ l8 r& ~& ]& |! d; {5 ?1 S5 L
- </script>
复制代码
. r/ O0 E' T2 l: c8 m% `: m
# d8 A7 j" |8 ]5 P6 c. G# d" O# ^
在这里参数是监听的事件名。
# H3 }' l* f/ \- z8 e' _ |