|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
) t8 S: g9 \ `8 H! A( p/ `# p - <p>{{ message }}</p>; J! s- `: R0 @- g) a( |7 `* v
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
& Q- h/ y1 }, Q- L - <div v-html="message"></div>; x" ?- G2 y& Q# G
- </div>( v! A$ C5 ~: A
- / Z3 V1 i7 l9 z: G% [
- <script># z i/ K9 f4 f: ^$ g( Q# l
- new Vue({
. x$ v! z2 ~1 T: D/ n - el: '#app',/ I; m: K: F; t$ f. R s1 {5 h5 q
- data: {
* T7 |3 X4 F. D* I, \; |3 X& I" F - message: '<h1>菜鸟教程</h1>'
7 g/ ]# W! u( l5 j! k - }
# {9 m# b5 |" C) T7 K5 ]1 ?( O - })$ N9 t& E& W# f
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">2 V7 k/ t* @3 t- ~
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">- o& E: I3 Q* S5 A) O; v B& o
- <br><br>& ^- x0 {# o6 p! Y- J% N
- <div v-bind:class="{'class1': class1}">2 R9 e! j* H6 K+ ?
- directiva v-bind:class
. q" v- o2 }6 \( g# i& r- V2 N5 I - </div>
9 Q# Z) ]# a. g% e: k0 U) C' r4 E - </div>. N: J4 D4 a4 c% [6 m7 N
-
8 n. r8 }$ \ g3 ~/ r - <script>
+ j, V% O+ a6 y - new Vue({+ w1 V" S" T3 b/ H
- el: '#app',* g3 E p! \3 l1 g
- data:{9 i: v% k9 V( E1 t5 ~$ v
- class1: false
' U, ~) X/ X: |6 Z - }' E# C& y- u6 @: o! I8 w! G* I
- });
3 b& L" z' v) g# `2 m - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">$ L' D4 a4 ?% N* h* k! T! \
- {{5+5}}<br>
3 }- T; `/ e1 j+ S# N# X9 l - {{ ok ? 'YES' : 'NO' }}<br>7 H% T4 [! s6 Z* e) S0 |' i% |
- {{ message.split('').reverse().join('') }}
z. I: x: ~* k, }' ` - <div v-bind:id="'list-' + id">菜鸟教程</div>
5 Q/ ~# Y4 K1 W) X7 |$ n0 m - </div>. n" } f' D2 m$ i5 M% D+ Z8 t7 V
- " y* v- F S* l% @7 R6 u* r/ w8 G4 j
- <script>; {9 |7 R1 k% h- Z# E
- new Vue({9 p* m$ {4 S' O# L" W n" y* W
- el: '#app',
7 g; N3 [# i$ Q: [% `2 c$ E" A - data: {5 ]# }6 D. _1 N7 F
- ok: true,
& x1 f: N( \$ [. ?4 P - message: 'RUNOOB',& U: \; G6 B$ c- Q$ U
- id : 1
# f* Q( o( D$ A( u( a4 j. V+ v - }
% h0 T7 v1 d' I5 ?; r8 N3 k: U - })
5 n0 e3 R# p- m" e+ G; Z+ [% | - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
5 i6 H1 x$ B7 v! X# G$ Z6 O) {8 n - <p v-if="seen">现在你看到我了</p>" [( J; X \3 W- I2 u1 ?( w* [
- </div>
& }/ M& n1 ~% H* x0 f- E# [5 L- R - 0 m. m' I4 ^/ ]/ S+ Z2 I) c \$ n
- <script>
/ X1 y/ O) z. H' w/ D - new Vue({
9 [9 \9 n" i J" j) P, A - el: '#app',
, b) X: a! {( A9 y* l. t - data: {8 r- T! [/ b" h1 |- d0 L' \1 j
- seen: true) _: |5 E, x Y( ?' J7 w6 K
- }4 Z9 \: Q7 f: B3 z) n+ u6 `
- })" p5 P/ {. f& r+ _5 j7 R7 W+ s
- </script>
复制代码 % F: w, H# X! p$ i) ~2 T
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">% ]: [5 r7 N. ?' z# V& V7 v! r
- <pre><a v-bind:href="url">菜鸟教程</a></pre>
3 h5 t. f# ]; @. q+ z: @ - </div>
# c" x6 d+ u# f6 B, V" c - 9 A3 i2 R! I0 U& T( x* {
- <script>
2 o, J$ q# C9 E- n7 i" w - new Vue({7 n5 p) R5 c9 c6 t
- el: '#app',
- T9 j! i- G; Z& B) I - data: {
7 U& b Y' }, y2 c. T# z - url: 'http://www.runoob.com', X1 X; p$ R* b8 G3 H F- H
- }
- s. Q& Z* ^+ l" K - })
/ u; ]8 U8 j' F X4 t, x/ m$ }4 V - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
% G6 b2 K2 g7 j+ V# ^) E( A n
- <div id="app">: s- _/ D+ P; _+ Y
- <pre><a v-bind:href="url">Vue参数</a></pre>1 Z2 l- t: T. L$ o/ G3 M
- + D% d5 `: g8 R- {7 L9 j% f
- </div>" ?: o4 N) ~: i, {6 L/ I
: d2 |! r$ {3 W/ O3 J& {/ N" |- <div id="app2">
, f2 p9 j; ~* h: U. ^7 F2 [7 Y - <p v-for="val in arr">+ Y# T) c( ^' z4 M# m# k9 W
- {{val.a}}& |6 Q0 t0 W( [7 d8 ~
- </p>
' q' ?1 }4 f9 t - <a v-on:click="tap">点我</a>
- j5 a$ @/ z0 Z- J1 s3 d - </div>
) `* A5 ]2 c- f
5 X- U# W0 f# ?- ^- / {- h# Q: J0 F k; A0 b6 Z$ D
- <script>
* {3 c; N3 U- ?1 o3 z - new Vue({& ^+ C: ^& q: ? q. ~
- el: '#app',
' u- ]/ X" l3 R& n7 Z8 l, ~1 D - data: {2 T5 H! `# M' l. n% N; Z1 a
- url: 'http://www.cncml.com'
2 N" l* _- O) [- Z. P: Z" w3 Q - }
3 r. o! A0 Q! P/ g - })* J: V8 V$ e4 |8 p
- new Vue({
) K$ F1 v& r( C, n9 u, B, S" d" f - el: '#app2',
5 n) O% R$ V( x; D - data: {2 C( ?4 r% K1 Y9 L" v
- arr:[- j+ t& t$ F, a' L8 f7 h
- {a:'bb'},% W( z& E1 ~ Y$ v
- {a:'cc'}, L% D# |/ c8 T/ ^6 ^! q2 c
- ]
6 k) A/ O) c& A+ \* }# W - }," e8 ~- H) l8 ^; L6 u
- methods:{
% f9 s0 }$ P- O r& W; b9 N9 N& p - tap : function(){
# D9 h! \4 B5 Q/ o - this.arr.unshift({a:'new'}), ?3 E ^# V+ s
- }2 ^5 l2 ]$ h" D: W8 Y: f2 N
- }
# Z& |! k& r6 X$ O& ] - }); q+ p0 i5 x7 }$ @% m+ x
- </script>
复制代码
# [ Q- p9 u( M5 f& I+ p, g( F* K& `+ T& Q$ P0 S
在这里参数是监听的事件名。
0 j r2 _, M4 e, p: U |