|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">) U3 f* P1 O. ^
- <p>{{ message }}</p>
& b2 x) y- l2 |" Q6 P# l! s - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
/ C, r( C# h+ B# H - <div v-html="message"></div>
# u& U& j W2 _ - </div>
; |# v7 m% `6 S# J8 U5 B -
! w; Q ]3 ?3 n/ n3 O* O - <script>
% o6 X' f# \9 ~8 r( T5 A - new Vue({. H# k* o% o7 M6 H
- el: '#app',; I L! p. `2 X x
- data: {6 ]7 C ?( ?5 S
- message: '<h1>菜鸟教程</h1>', c6 \ C$ d0 l
- }% A3 f" x G6 ?7 s
- })
. |, ~: D O- q0 m1 p) g" X$ x. G0 A - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
' z5 H5 ?7 u- S: u: z - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
; h, T# I0 T) r0 X& h( {5 \1 S - <br><br>
0 y& }% ?+ G5 W7 C% p6 S7 f+ \7 | - <div v-bind:class="{'class1': class1}">/ }5 o8 q( _+ H4 t% e7 A" t* G
- directiva v-bind:class
- X/ Q3 ]8 p/ i: n - </div> V* r8 p! M9 h' f8 m% w- X: h; N
- </div>9 [' |2 A! P, _6 e
-
' N, I5 a: P% _, T0 a1 l! d - <script>
1 I5 U3 [1 Z; d - new Vue({
6 ]3 H3 G1 {* K$ F6 D: f: i7 l2 t - el: '#app',
) D9 \ j# @ f1 s2 B q. F+ L - data:{. _" j+ C! ]6 m+ n# t# Z
- class1: false/ T X7 D1 e# d
- }
8 ^& ^- M6 P+ v, ~ - });
; k: R% F) Q; I$ e4 y q! t - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
0 l: P& j" ], R7 K' X3 c - {{5+5}}<br>
/ F8 u& U0 ?- M+ i3 C' N - {{ ok ? 'YES' : 'NO' }}<br>8 o; n' U, H X0 j9 c: Q# h& g' v
- {{ message.split('').reverse().join('') }}
! g( R. t) {5 k4 h7 i6 Y1 R - <div v-bind:id="'list-' + id">菜鸟教程</div>
9 O% J* ?8 G, g, h2 ?5 ^# y( g - </div>) Z; o( _6 M# {7 f3 ]2 f
-
5 I; n( K# `' Y4 Z - <script>
3 I8 [: f1 }' e/ w - new Vue({ D$ x4 m1 t9 `; v+ ?" [
- el: '#app',9 \, j C. u: ?5 y7 u( p
- data: {' p/ H# i7 u# e: N' D0 w; y- T
- ok: true,
4 W, q8 j3 f/ M9 m% Z - message: 'RUNOOB',
7 p' D3 |/ w F+ F+ } - id : 1! r8 v' I% g, e/ Z3 Q# {3 Z
- }
* [$ S# _$ [9 T; k) t% u - })
& x+ ~0 c/ p3 M2 s5 i+ J - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
: y5 @$ k6 \' L, D1 F - <p v-if="seen">现在你看到我了</p>
3 U6 G$ _1 J3 Q# L - </div> h( H+ @2 i* h+ Q& r2 N
-
- F) v6 X+ l! n9 _* F3 d5 i - <script>, M. L4 t0 G9 _
- new Vue({3 \! g, q8 Y/ Z) T% G8 C9 R
- el: '#app',* n- s8 W+ |9 W2 v$ N
- data: {
- r8 J0 M7 Y) u9 j- R0 O1 K - seen: true
/ |( C9 C; r9 L" L - }
. U8 A. z& E. f% G } - })+ {3 |9 n% T+ F6 F
- </script>
复制代码 5 _8 }# @& w% ^, x
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">' } w7 Y: c. K, q) C2 H4 x' }1 Z' ?
- <pre><a v-bind:href="url">菜鸟教程</a></pre>
# t/ z W+ f9 m* g# d! R - </div>
! b! ?/ X% R# p/ }- {$ x -
) q5 V+ R* C& }1 N- p: |0 W - <script>) I6 G' t N2 U1 n; Z/ R/ \
- new Vue({
& W' t+ h* ~" E/ E# q2 X6 ^6 N - el: '#app',
/ m+ b7 I/ O- y - data: {& y4 T' g2 R; A
- url: 'http://www.runoob.com'
& e. C: B; G. }6 d G u - }
4 w* a* b$ N7 n/ ~; p3 X+ k% F2 ] - }), v& b, _7 s+ l* d
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
& @1 c! s9 ]$ r; L: A5 O, k4 H+ g
- <div id="app">
- u D9 |1 E d8 _6 t: d - <pre><a v-bind:href="url">Vue参数</a></pre>
( f- T' {4 N; D3 [1 Z
?9 s' }0 [! w, |- </div>( y) `1 h- o" p
& D6 e- h" b5 c$ h7 x$ e- <div id="app2">2 M3 A' v8 f/ u5 Z$ e5 G
- <p v-for="val in arr">/ F* x/ ^2 I$ D- f( o
- {{val.a}}
& ^- Q5 _ j' c' F: r - </p> p# i' O8 K' Z; q9 ?6 W4 M
- <a v-on:click="tap">点我</a>
# s$ m) B2 p3 n5 ]' y - </div>- `9 w) l ~) Y
- : t' e# \3 p+ X2 }
) m0 n* O0 Y# d/ b- <script>
7 o( {" ^9 d% V3 T4 W$ L - new Vue({: p- `( A7 ?# W
- el: '#app',
$ l" X2 \4 |" e |. m - data: {
9 p3 C/ p$ l) y5 q7 ^ - url: 'http://www.cncml.com'& u8 b3 j6 R. I- G4 I; p4 O
- }
+ m1 i+ Q3 w3 w7 T - })
! u1 p& ^4 f4 | - new Vue({! h. W3 M8 g: w2 S' e) z
- el: '#app2',* s- K- V, n" i" N4 Z" w2 h- S
- data: {! n* n$ ?* N6 @! x% x( _( o) H3 U/ O
- arr:[; K, _1 ^( k+ V5 C9 ~" s
- {a:'bb'},
( w! k3 U- W% ^7 i2 T2 Q* ^' } - {a:'cc'}: W0 S& Y% G% \
- ]
. L6 C8 S |7 v0 a0 t - },1 A4 W4 P- \+ {, ^# w9 ^7 @
- methods:{
3 N! z% X2 V2 ?1 j8 i! w+ q5 o" Y - tap : function(){
8 ^1 R1 n% V1 U, [; X Z# \6 r' ]2 b3 u - this.arr.unshift({a:'new'})6 V6 C% T! [0 I1 P
- }
" F4 Y @9 I4 ~- c) N - }
& L7 b1 m2 L2 W0 q) t- W - })4 @, Q4 D! G5 s6 A
- </script>
复制代码
% A5 _/ A9 f0 r" F3 t& p) E2 N( O9 n- P) M
在这里参数是监听的事件名。 # {- l; P& h2 ~! F, ~$ _5 T
|