|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">1 Q4 G4 j9 \9 d2 M; D
- <p>{{ message }}</p>' E* `: ]) K2 ~* a# e. o
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app"> o% n. W" M: z1 S
- <div v-html="message"></div>
# ]) t; [" W8 [' m8 I: q - </div>4 J2 h9 e5 s1 K1 r9 G& s
- * t& ?1 U; R; y/ I1 _
- <script>4 ?4 {6 T1 f) z" s& M
- new Vue({% t" r/ d+ v3 m% @5 }' v, P
- el: '#app',
9 v* H; X' u* Z) a- u% r H7 q- ~) C- q - data: {
! O6 y$ S9 g, i3 s, [7 U - message: '<h1>菜鸟教程</h1>'" Z+ |+ T& H5 k6 F+ \2 C4 C
- }! \! N+ J& L* I' k0 ?" R
- })$ k: ]5 p8 Z1 \. M, d
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
# h) P: b! Z2 a c - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
( h3 p% e6 ~' Q( V+ V) j - <br><br>
6 p' h) E7 S$ d - <div v-bind:class="{'class1': class1}">
7 h5 ^$ d: `0 H3 ~9 ^% Y' @* x3 U - directiva v-bind:class% @7 @! z; G# ^/ r% S
- </div>
$ s, g: l) v# W3 x- U - </div>2 S9 p* ?, p" F- V" l
- ' n e6 w! r' Y
- <script>5 p+ X% c ]- S2 n
- new Vue({8 k4 P I7 U% |
- el: '#app',
' Q; m u1 O0 X, d. C; S8 K - data:{+ S3 b3 {: e' ^7 G0 u y
- class1: false
8 b5 w3 A/ M/ @% `5 ]$ w - }
+ R+ k+ K) u3 g3 m$ [ - });
0 K+ E7 w7 h$ T; c0 z# R2 r - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">+ J" \! F, C6 Y' @
- {{5+5}}<br>* y/ v- f. L9 u$ n
- {{ ok ? 'YES' : 'NO' }}<br>
8 h# I0 l; x1 r) a5 i1 j - {{ message.split('').reverse().join('') }}% G8 d1 N. X& V0 a" c% Q
- <div v-bind:id="'list-' + id">菜鸟教程</div>. ]& Y% [ X5 ~# G
- </div>
5 f) M) O; A" E) |" d! Q - - S* b) E* S/ @! q
- <script>1 U: ~! p6 d2 i, {4 ~
- new Vue({
/ V8 i" Y* l w1 d8 d/ r - el: '#app',) z! ^5 t+ K3 s+ V X6 R4 U
- data: {
5 O3 f7 x0 X2 V2 {, }% D: l- V - ok: true,
5 B3 ]9 f" d& r# N: f - message: 'RUNOOB',1 \6 i, @8 G* }' a8 v
- id : 13 ~1 P' x) t- ^: r% @& ^
- }
% b5 k5 s4 ?3 V9 }4 V! E - })& \. ~, p5 L, |9 G* x! `& H
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
* H8 |6 U! I+ U* n$ c - <p v-if="seen">现在你看到我了</p>. A: o& r4 Z* g
- </div>
* `5 I+ }5 K- e7 f3 L/ U -
* o5 V: O v p+ G% R - <script>
! v6 v+ S. l& T2 @! ] - new Vue({
& R+ p" j1 l: {* a9 x" O* m - el: '#app',
& W* x3 @/ j, h! g6 f: \+ Y" n& }) M1 A - data: {. N3 _, }1 k. @: F. n$ }+ h4 O
- seen: true& W7 e7 {9 h: K
- }' Q: ~4 C$ |) U) E& s, ~
- })
) S( b: N- G* K3 D+ T$ l - </script>
复制代码
/ Q! j, y* \8 A) f) i g这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">/ k/ D& [# Q" r- W0 @2 a) C
- <pre><a v-bind:href="url">菜鸟教程</a></pre>
- Y0 ^+ Y b. A$ l) P; B - </div>4 |" ^! V; O ]1 L4 D1 j7 F
-
8 G2 @& G4 v/ p$ Z {' O - <script>* R& g! l S; X- ?, }) l
- new Vue({2 Z6 G! p* Q3 j% I6 C" T' f3 r: C
- el: '#app',
. ]* Q% P. H$ x* |% H - data: {
- a( T1 g# }; e& a' K# C( f. ~2 s& S - url: 'http://www.runoob.com'4 `1 J3 d. \4 i# o6 m
- } ?: h% M( _7 Z# U* ~
- })+ \" p! k9 I+ C6 B3 \: m* e
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码6 M* S. T% }, I. Y$ p4 d
- <div id="app">7 Y% j& \3 n/ f0 M/ [4 K. L
- <pre><a v-bind:href="url">Vue参数</a></pre>5 F- W/ w6 W( v; \- |/ _& v, c8 T& M
- - C4 Q! F+ S6 t' f' V
- </div>
% Z3 ]) |5 r( G
& ~% N! U% H4 N& K8 F# X( B7 Y# A+ R- <div id="app2">
/ S. \7 K7 J+ [$ q( m% Z9 } j( z - <p v-for="val in arr">! i8 _/ m3 r' X* f
- {{val.a}} B' ?5 L% x5 o9 `( t
- </p>: k, A5 w" U( y* Z2 B7 f# E8 B
- <a v-on:click="tap">点我</a>
& P! O( \1 ?* v* W/ Y9 t1 A - </div>
" v9 U, z2 _# [- y! |9 O( Q# J - $ c2 d5 I0 p6 e# ^8 T4 I1 n
. {5 y% t& L8 c& U- <script>' i; ~0 T! u3 S. A# u. s
- new Vue({5 P9 D7 U5 f3 h: F# |+ Q6 I
- el: '#app',
2 f6 k. q6 }; m% Z8 } - data: {
5 x7 D4 [4 V. I - url: 'http://www.cncml.com'& D- c; `* D) E& @& y
- }
3 e0 e8 C( E0 ?5 i9 L' q: E) u9 \8 p - }). a! H( @- }$ W5 x4 x) j! |" P8 D0 y
- new Vue({! j6 y! K/ V3 A7 U* Q x" U7 h1 c: O
- el: '#app2',
0 X6 `8 I; b. J' S: V# x0 c' l* J7 W - data: {
* e0 v, R# r5 } g/ J0 i - arr:[
' i% n8 }- B1 y) Q% ~0 ^+ p! o! X# F - {a:'bb'},) w+ z2 u' K% }# r+ z6 N9 |
- {a:'cc'}1 K0 q5 H% w9 E4 B% e+ s2 g
- ]5 m; H- Q3 P) y/ d7 Q) S5 s
- },+ _) }/ {+ R, y# r5 d
- methods:{
- Y2 q5 Q8 H+ q: } - tap : function(){0 s4 v3 T! W# \: _% m5 R6 a
- this.arr.unshift({a:'new'})$ E* P/ n, {! k( ]5 g
- }
# X+ P, b* w* R( e - }& S$ |" w1 f; a: |/ W1 T
- })
i8 g) z. y' j! ^" L: d; P1 S - </script>
复制代码 % i# g0 c4 D2 u H) [+ a# i( ~! S1 {
# }( K: X9 O/ d. h8 P
在这里参数是监听的事件名。 + f+ S0 X w% h% L! b* [
|