|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">; t$ [: A& m. }
- <p>{{ message }}</p>
5 i6 {5 V2 w' Q4 g) ~. Q S - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">7 m5 w% e `% V/ r F L* ~2 C7 a
- <div v-html="message"></div>! v$ r# p) H g; P2 U! l
- </div>& C; ?5 H: ^ B) t7 \
-
9 ~, E3 X" T1 R- } - <script>
# m& L' o# Q: b. R3 q8 ]- P - new Vue({- C( E& P+ x/ J7 _4 q+ z3 C3 M V) ]
- el: '#app',
* s; N1 C$ z5 s. J! P - data: {7 ^* M& O; g* E# b$ `& j$ q5 R) g
- message: '<h1>菜鸟教程</h1>'1 d# k. j) G- L8 Y, D* g B
- }
* Q O% l9 l- J( w - })
$ T3 F8 j9 B, E - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">4 L4 @: W) \( F; ]* b7 g" s
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">1 {" v( L+ S5 C4 J
- <br><br>
u* n2 x' P/ l' [% l3 S - <div v-bind:class="{'class1': class1}">
! T- i& v8 z, ?3 E% W* l3 n* a - directiva v-bind:class& F% J/ K9 z/ {0 c' `* C! N6 m
- </div>
' D: z* q( S" x& @ - </div>( ?& h) ^9 i6 B' n! ^( w
-
3 O" D \# a8 y* S0 Q - <script>. `% L# N+ a2 e; ^) Q6 W9 S+ C3 b6 a
- new Vue({1 a8 J9 o: ?0 R0 g0 V8 O
- el: '#app',
& z- N3 D, G5 `* p - data:{
1 C7 X, X" o7 B T7 e* x8 ? U - class1: false
- g" T0 u& Q8 q0 I - }1 j5 D$ `4 c9 l2 R
- });7 G+ w& {; Z c. B. j
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
7 q% O2 _. f7 u! L* A - {{5+5}}<br>
% h. y# ]: D0 q3 b* ` - {{ ok ? 'YES' : 'NO' }}<br>/ ]6 p+ b4 o" C2 P* l6 Y5 Z5 X
- {{ message.split('').reverse().join('') }}) g! ~4 a! H* E8 q
- <div v-bind:id="'list-' + id">菜鸟教程</div>
, C) ~, T2 S/ ^ - </div>5 s. l8 @& j4 `. e0 a
- - Q' o7 V* F \2 T7 e" A
- <script>) U3 p# f% J7 u# L1 u
- new Vue({
2 j4 {- p& Q, u% f! r0 U - el: '#app',
- e+ f( q9 S9 C. |0 y1 m9 t - data: {3 g. E' @( H6 o, K
- ok: true,
" {; ?% M" ~9 y - message: 'RUNOOB',0 z, {0 W5 U& F. @
- id : 10 s! D3 t* e+ Y4 U, l( l
- }
* q3 n' V2 f9 z- E+ x - }). w) f+ t: }- _4 W% [
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">1 H! V5 S0 J, I1 E) I
- <p v-if="seen">现在你看到我了</p>4 g6 A/ @" D, }
- </div>/ h0 J; z- j1 C
- ; n* T% k% Q: X3 I7 U/ E
- <script>0 C: P- f8 r% Z$ @ O
- new Vue({
+ d; U& x# k- m9 C$ o - el: '#app',
0 g o! {0 q' \ - data: {
, G+ A# |+ o- J - seen: true
! z0 x8 ^7 [3 A7 `+ q - }; {9 B- s2 ]# M$ ^: A" ^) m6 x, q
- })
5 A! G9 I. R& b2 h - </script>
复制代码 7 c6 ^7 U3 v8 W) L% v7 v
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
& Y r# g6 M; u( J' k/ L( J( C - <pre><a v-bind:href="url">菜鸟教程</a></pre>9 A( R" C8 ?% i; D8 w; D& s
- </div>
# M4 r- X) h# E6 D' x' M! a+ i6 Y - 2 l- |% d+ }, k, P# N7 _4 j% J$ [& n
- <script>' g9 g9 Z/ ^5 p. G2 J3 h4 [( p O
- new Vue({' m4 u Z% f- Y7 I: x* H- `
- el: '#app',+ |4 C z* s6 X& H3 D! G( R
- data: {
! X1 a5 K6 J8 `. _ - url: 'http://www.runoob.com'5 |) z4 l/ p# x5 W( d
- }3 I( R2 v' ?" Z3 ]/ r2 e/ J
- })* {8 C( R1 |# Q: e& M7 b
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码% Q+ t2 e) c* Q, ?+ \* l
- <div id="app">- Z6 d2 K# B; W# C5 n$ ?
- <pre><a v-bind:href="url">Vue参数</a></pre>) [% C2 n1 y1 ?' ~
- , [* p$ O2 S2 x1 `: u
- </div>0 ]7 O+ N" |: W, K% W. E
- . X2 r; X/ p* a$ c" V, E- ?
- <div id="app2">
8 V7 Y1 P, S h - <p v-for="val in arr">
) E) j0 r: I4 {$ a( s - {{val.a}}* d! }3 d3 }4 k: i) p7 e+ G+ Z3 A# L
- </p>7 d4 k8 x" h( B4 o# q$ J6 l9 X
- <a v-on:click="tap">点我</a>5 {8 | Q* q% A0 Z8 O5 Q% e3 _5 A
- </div>+ X) f6 y* C. j0 `. J( [& I- r/ s
- 9 W" w4 S( B4 D F
2 i! s. O; ]4 @0 r2 N- <script>
7 D% K R$ m, l" Z, e/ f - new Vue({ u: m: y' {9 P4 F
- el: '#app',
- B# u7 T4 y* R1 r2 w8 Z - data: {
M7 G$ Y# s7 S9 f' [7 S - url: 'http://www.cncml.com'$ f+ g y/ T7 F
- }
# {. Q' G( d$ ?6 C) k9 I) a - })
. f$ L% w' A( \ - new Vue({
& i( C3 D1 H# g7 z" m - el: '#app2',# ?% q7 \* f' }! M
- data: {
6 [) o5 g4 L6 W9 z; r - arr:[
& H! D4 i. _" h# T1 ^ - {a:'bb'},
: O" V# w( `! f# C7 ^8 A/ h2 I: u - {a:'cc'}8 p6 p" F: B) J( B5 f, A
- ]
0 `) J& S* y# T1 o n1 q5 B - },. s5 ~/ m: r t9 n/ H, b: u
- methods:{3 U: d5 N, A" n- K5 d' M9 [* _) E
- tap : function(){
$ e: K/ @# S$ x. X# W+ z( B5 ? - this.arr.unshift({a:'new'})
/ @" J2 b( f$ o, X - }
) S: l" l4 _' ~+ }2 Z( q - }" C: ^" T3 w$ n S2 a; D
- })2 {7 L: ~. [( _- S/ p j. g
- </script>
复制代码
# H/ v) @; H4 Y0 r' m3 [. T
4 f# E- `' r6 ]1 U) C
在这里参数是监听的事件名。
J$ [' _& f! a, ?. I9 s |