|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">4 k) n1 p( ?) c
- <p>{{ message }}</p>
4 P# L, U. c' ?; k - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
* T3 |9 m7 ]2 ?' I; S+ P - <div v-html="message"></div>4 Q. A3 @5 S) A# U- H# C
- </div>8 s) j: i) I0 S+ q
- * }: z$ c4 C% W6 s3 w: W( z: t, r
- <script>
8 {8 `: q, ?3 i4 M9 \( I/ W3 b- U - new Vue({
1 g4 J; ^. @+ _! o, { - el: '#app'," e) i! H& a" i2 S
- data: {8 W, P3 A$ r& g+ b- H7 W" z
- message: '<h1>菜鸟教程</h1>'
2 e" V. M0 L5 k. O! N+ s - }$ o/ q3 ^6 J7 R* w
- })
8 S. C" }7 G3 v5 u! Q - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
" A v: X3 {2 q0 B - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">$ a* b5 f. Z5 A3 J0 J: K: n
- <br><br>
- Q) S8 | y+ b! ~) f9 b" ` - <div v-bind:class="{'class1': class1}">
( G. D* U" g7 s" U& @3 M' L - directiva v-bind:class4 [9 N: T l3 p( A$ Y( T
- </div>
* i9 ?3 h, C3 C7 r" c1 a- W3 R9 x - </div>
6 y$ t8 B$ A7 c" X' j0 D# ~ - # F% o. Y- b, Y+ H, S2 F
- <script>7 K+ ]) O- A0 ^& K" `/ b) Q W5 |
- new Vue({
/ I0 H& v) f: u2 C$ H4 l1 [ - el: '#app',
P+ }3 {9 J$ D' l/ Q6 { - data:{/ K4 F: a) i- C6 r9 J) c+ P2 }/ v
- class1: false
8 m Z5 R7 M1 v+ R - }
! b/ T [- X2 M& v5 `; y5 }# n/ |' b - });( m4 A, j; K, K4 [2 a, h! V
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
: w0 u0 a5 c& y - {{5+5}}<br>
; W+ W6 U8 V; ~. G) L - {{ ok ? 'YES' : 'NO' }}<br>
2 ~% j) J) Q7 _! d! ^) g - {{ message.split('').reverse().join('') }}6 t- n9 a/ b$ N7 t' O( |: P4 O' z
- <div v-bind:id="'list-' + id">菜鸟教程</div>
" W* O% ~/ [, f& r - </div>+ M4 ]7 ~0 n4 E+ u! R5 B" N
-
) e; L$ i/ _3 e" X& J0 ] - <script>
) D/ u& n( q6 C& A0 v7 e0 y - new Vue({
, d! ]. P& C. H$ c6 }2 e( f/ z* c - el: '#app',
. G, [# j) y4 w7 D - data: {
+ N$ g( I: e/ f+ }5 S( T F' S7 B5 ^5 T - ok: true,, t0 C6 D3 X$ E. Z" T8 Z
- message: 'RUNOOB',
3 T/ W. o: s" C* Y0 ~( { - id : 11 n, y, n& A" }
- }
; e+ e% M- E+ }8 N/ \1 q/ q - })
6 ?- }# o: L6 s7 p y - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
; e: T! s8 j! x' v - <p v-if="seen">现在你看到我了</p> `- }( T" B: f% @" |* t
- </div>- ~$ P+ ^ B2 R1 M
-
* d( _, U3 w' U$ t1 T - <script>- ]1 ~4 O- `! R
- new Vue({: I' O) W+ Q3 Q2 v
- el: '#app',
: H, A3 _0 T0 o - data: {) F0 |$ q% f2 y/ L
- seen: true+ e, ?7 Z: r& R; i
- }
2 l' ^1 i0 B) B8 ~# Y - })' Y/ X1 R) S3 O1 u
- </script>
复制代码
1 \2 ]) f; Y2 Q; R5 M8 I这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
0 W- X% F' a& r8 D& {# C - <pre><a v-bind:href="url">菜鸟教程</a></pre>
4 A+ W- r$ E% ^2 ]/ E - </div>
; e* b: f& v* n0 W - , C5 S/ S8 f$ r2 z: Z( U
- <script>
. |4 ^) W) b$ b) j$ g8 k - new Vue({
7 t: i7 D$ H; o& ?0 |! { - el: '#app',
1 h5 y$ e' L: f - data: {
& p3 A9 I# e& F- W - url: 'http://www.runoob.com'; N2 o) ?+ L# s O
- }
2 M0 E7 Q( F4 p n6 J - })0 }# f8 e- J# I9 H$ a
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
' @( M/ @1 E8 O( W1 W4 s
- <div id="app"># f& o- l2 N5 Y% Z7 H
- <pre><a v-bind:href="url">Vue参数</a></pre>& I& Z [' f8 [, d: U% h
" R6 I. J6 l! ?+ C7 k: q8 g @5 h- </div># v; d) A2 c8 f1 {& K2 D; y9 N( [3 d
- . K, t2 {9 G5 X3 y% g3 S ]
- <div id="app2">1 M& m, ]7 _) |3 A2 ]" ]
- <p v-for="val in arr">7 v5 M3 ?) w6 H T
- {{val.a}}
* I( E; f( {8 a8 O5 { - </p>/ L* l& S2 A( m
- <a v-on:click="tap">点我</a>1 d2 _2 }% o5 Z+ M6 T
- </div>$ ^- s$ u/ X: G3 L8 P) s
+ h2 e- B5 |; Y1 ?" j+ @4 I- & {- d, X' x- ?
- <script>
( Y6 }- e% [! Z - new Vue({# y" S2 F* ?, t1 O* v4 V
- el: '#app',5 I& N, K; |: i4 t
- data: {) H% w% x' B% Y- A& ?0 z& m4 }
- url: 'http://www.cncml.com'
) j) L4 [( l, e- l t - }# _6 V4 X$ g! {: ]
- })' \" w$ _2 V& e! G( n% S$ {' n
- new Vue({+ I7 M' K% @8 H0 O6 y7 C( k* X: ^9 F
- el: '#app2',1 _8 U3 ~5 H/ c4 K1 D% F, q, U
- data: {
, K4 P3 V; A$ \$ x - arr:[ F$ W* g" x5 e! b) u
- {a:'bb'},
* @! p8 v5 s1 x3 w - {a:'cc'}
. w- d3 m) R- V: E$ J - ]9 c+ c) e; s1 G2 z
- }, m4 F5 e* T& u4 T2 z4 D
- methods:{0 n5 Z: [) T" E; p* M
- tap : function(){ x/ P$ n9 R* @: t: W6 V2 s
- this.arr.unshift({a:'new'})
a" w; h& n/ B, w0 B - }
. M6 l" G+ U6 g- U1 w) ] - }& i$ J* C2 n5 h% e/ x3 N) M
- })- t- I* i& g. M+ f
- </script>
复制代码
$ b/ B7 B! i6 s' j2 \ _6 ^# E# z" B% N& W
在这里参数是监听的事件名。
( }: z- k( M4 C: x. v |