|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
/ c" O, Z% L4 V - <p>{{ message }}</p>
2 E- q1 Z" ?1 Q3 ]. x; `9 C+ f3 b - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
4 ?2 ]/ h, F- @/ s4 ` - <div v-html="message"></div>
6 G: Q5 V8 [" ]9 Z - </div>
$ v, f$ A, C, t3 [% |" f -
# I( N; B2 x/ t- B7 u - <script>2 I! w* U4 }% c# z2 P4 s6 Z6 Y
- new Vue({
2 Z2 x& J* Q" q6 E) s: m9 | - el: '#app',$ e/ y6 w2 u- [. M( E! Z
- data: {1 E! n7 P6 `* k# o( ^; [/ ?2 h
- message: '<h1>菜鸟教程</h1>'" g' n6 D9 @! f, W4 y
- }
9 ~& Q/ z! U; \ - })8 x8 S I) U6 U1 ^! E( g% x' n9 Q
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
- T- v0 n1 E* X% F$ S$ Z* ] - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">. l5 T* G) g) c x8 d! k
- <br><br>
/ T! N* D6 |+ ?9 T0 d; s* Q. A - <div v-bind:class="{'class1': class1}">: c0 q) C+ e. H1 ? B
- directiva v-bind:class( W( G5 L9 _! [2 z
- </div>
" ?5 w1 V; a% R - </div>
" R, P" ?/ t- [% I$ N7 ]9 S- ? - 9 u6 [2 C( k' h" C! m( c
- <script>
8 y! A1 k. p, N: S# w4 w - new Vue({
; B0 [# n' B( {# N9 Y - el: '#app',
2 K: ]1 A6 F, B" d8 k$ Y. V: G - data:{& n# ~1 }( B# v
- class1: false
" J3 g2 Z( Y9 g - }1 L- v; [! y0 d! ?' s o
- });
5 O- N8 ?# X7 v - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
/ \4 I, W( W/ D. F/ L( G# f - {{5+5}}<br>0 y/ \1 }; G) r* O+ R
- {{ ok ? 'YES' : 'NO' }}<br>
3 B* l9 @, S5 w! Y: l7 N8 e2 H - {{ message.split('').reverse().join('') }}
* \5 k3 }( H( I2 m7 ` - <div v-bind:id="'list-' + id">菜鸟教程</div>4 H% ^/ k! W3 H) _' K
- </div>
6 V" d2 y4 ?5 N -
1 i% ]0 u/ S+ L$ X7 n' ~ - <script>
" T& T) r( N5 d: W - new Vue({+ d7 X; r; Y% z* D
- el: '#app',
5 K4 e) M! Q2 x- m - data: {) f I- |+ K/ ]& W
- ok: true,: U7 o8 G4 ?2 Z. s1 T7 }7 Y
- message: 'RUNOOB',
% G* B8 X( x( B% n/ t% F# c3 [8 E/ ?6 X4 q - id : 10 s' T8 Q' ~% L; N7 F. z. Z
- }
) Z4 K r& E/ |% [ - })3 m# p5 A' V- B% L# g
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
5 Q) P" O% B+ O' \6 l" y: r - <p v-if="seen">现在你看到我了</p>
/ N; L8 a S3 ^0 q" D) b( j2 \ - </div>
v: F) f) d- D9 ^0 ]2 o+ A -
/ {8 d6 f* v" K$ Y- v - <script>1 d/ S! F$ X0 Z9 ~/ |4 _" j
- new Vue({
; d8 h J+ V6 _" c5 R - el: '#app',
: d1 d3 g. A$ V- {8 r2 E9 L - data: {
+ B9 s2 ]9 O, Z/ A h2 @, P- M! T4 @ - seen: true3 r& [1 B& R( S0 y3 v) I- E( p
- }5 Z) ^. _: K9 Y( j
- })* }: S1 n' n2 h7 C# t
- </script>
复制代码 ! i/ j8 i( P7 T& u/ E
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">: m$ n5 e. T u, V" \
- <pre><a v-bind:href="url">菜鸟教程</a></pre>7 I1 ?# ~" X% y. c* [
- </div>) n, o; S& C2 Y9 `! ~4 E& N) G$ J
- 9 n" Z" m% H) r0 v$ |" [$ ?: @! b
- <script>
6 P; [/ E5 N4 N - new Vue({
6 o; {' K' j% }4 |, l - el: '#app',
3 U* I- N% r/ W# P0 z - data: {
; |! q1 t# _6 o6 \4 B - url: 'http://www.runoob.com'
y' |/ [2 j/ ?5 |0 [ - }
4 w: b) q3 X0 e/ a - })+ {( l, Z/ O# _- X7 K/ K
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码 L6 j+ c2 Z% D0 @
- <div id="app">
$ ^, W6 b6 K; R - <pre><a v-bind:href="url">Vue参数</a></pre>" R+ O2 h* [7 y4 V% a
- 3 u# Y g+ [7 ?4 C5 |
- </div>
, n9 M# M: L/ Y% C7 ] - 6 i. p$ q- X$ ]9 Y! }; A7 j" i
- <div id="app2">
g9 v2 z7 j, c; r2 E% [9 J6 c, F - <p v-for="val in arr">
# [3 W6 ~3 k, Y0 o) T, @' @ - {{val.a}}
: X' `3 \2 C. W& P+ K7 e& } - </p>
2 [ U4 k8 Q9 m8 A! A3 i - <a v-on:click="tap">点我</a>' x" { [2 m& T6 i6 Z: r- O
- </div>
3 z3 m) i0 r, H' w3 _ - % t1 |: t: X" ] z5 L; k' h
- ' `3 K1 N' [( J) R' m! j$ Z, \2 T
- <script>
6 L6 @* z. [' d+ m* ^1 H - new Vue({& h- L7 r8 j# Y- h9 S$ d+ y9 ^
- el: '#app',
* j: P% g" ^* y/ m, E1 F - data: {0 d0 z$ j4 c2 _7 D1 O) N, r
- url: 'http://www.cncml.com'
0 S7 p$ \. m# i! ~3 x; L - }
8 D; e: K8 u* a; n4 P& F - })" {% ^ t8 n7 z( [) ?: r0 N
- new Vue({
6 u$ c5 Q% D6 a6 r' Q P1 `- ` - el: '#app2',
( u+ R2 H" d$ u - data: {
5 |5 _5 G+ G8 x - arr:[
' v8 k6 q% H& S - {a:'bb'},
+ V# H. b5 H: f/ c$ Z5 u3 B. Z6 v - {a:'cc'}
. F$ @2 j0 O1 q: t; G- {; h1 N - ]- H0 ^3 N6 E5 D
- },9 o, p) P2 u# A8 l5 T) U
- methods:{
9 A# X n! E j4 V - tap : function(){
1 X j5 c" @2 t# q% M - this.arr.unshift({a:'new'})
# r4 H; W; ?8 U f R - }
1 D9 V/ b5 M- l! h: p8 r1 Z) B - }
/ V: I; G5 H, a; S - })! v# h! k" h3 B* d) A, u
- </script>
复制代码 $ @# _; }2 d/ v! L" v* ? H7 D# {
9 Y2 ]: m2 Z; V; V
在这里参数是监听的事件名。 " V( Z4 d+ d; G% y) X' _1 c0 X
|