|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">% F% S, r( x0 [
- <p>{{ message }}</p>
% z4 ~$ \: s# \; K, X; ?8 L* @3 _ - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
' V0 p: [& [9 b* P - <div v-html="message"></div>
. L8 ?, _# x9 E3 u% m" R1 t - </div>( O6 \+ J& i: p! n* J; J6 B( @
-
. C- R2 ]. @) C3 A - <script>
1 ^5 g$ Y% ^4 Q) Q9 w - new Vue({) D: t( \. i8 y" H. \4 D
- el: '#app',$ @) n- V6 C' e% ]0 b3 k& y
- data: {) g! B% \6 @5 k8 Q8 o6 t( y3 o7 D
- message: '<h1>菜鸟教程</h1>'+ a m* x# M+ d
- }& N: D% I% M g
- })
- p. q+ A( N$ @! x6 G' o4 G - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">1 g/ D7 P1 P2 A# w& D7 E2 P
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">, a9 v( X* U W5 x+ `/ z+ S
- <br><br>
9 D% z2 ]; F5 t* r e" R - <div v-bind:class="{'class1': class1}"> Q; ]' k' B S1 F3 | h( u5 P
- directiva v-bind:class: F5 i. [8 v) w
- </div>
- ]3 M3 L% M# Q- e6 _ - </div>2 F" M% [( m' J9 p
- 6 u" v. X/ \0 G2 ~
- <script> ^" F+ l. R9 E$ R( h0 E
- new Vue({
$ e H* j9 [: F+ j3 W- q* c- x - el: '#app',7 l, Z( f+ i7 w u0 Q' i
- data:{8 S. ?9 v6 l( b+ u9 W0 e: [
- class1: false
3 ?- u& I0 z0 C1 w - }
/ |! I& t7 ~+ m# F1 \3 e4 T0 l. J - });/ ^; N+ w- }) ~- J
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">( x8 Z7 | Z5 E6 ^8 _
- {{5+5}}<br>; h* \7 _; m7 X
- {{ ok ? 'YES' : 'NO' }}<br>
1 X. L$ ?4 X( ^; L6 b - {{ message.split('').reverse().join('') }}
/ e2 J# Z8 n4 w" @, A& V) [0 T - <div v-bind:id="'list-' + id">菜鸟教程</div>5 P1 U2 U6 `- I# o( ~0 f
- </div>
) r9 C$ S5 g; i2 N1 j8 j - . y1 F8 ?' V. O) _$ e
- <script>
) {0 E7 ]6 Y7 M1 y8 _; [9 @ - new Vue({. v0 \5 |# `% K7 _4 ]8 H
- el: '#app',0 {, [4 w! v) d# h) J: P) `
- data: {0 S- Z( Z! z# j5 I+ _
- ok: true,
y2 \, E$ L7 f: D2 f% \ - message: 'RUNOOB',# Q" s# K5 ~( a, Q
- id : 1
9 Z: K. N' \6 G/ `7 M' F! \$ k/ h - }
. @6 M* p3 I4 B; D7 Z - })
- b& T% N, ?( v s+ i2 h D1 O0 ^9 w - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">! T B6 w, A! D# E0 |
- <p v-if="seen">现在你看到我了</p>
& |6 R, q7 {6 U" @$ | - </div>
# }. K. }7 ^, O" u+ b - 2 e. m3 j* C, z' j- V0 h! f) \# Y
- <script>7 }! z: f$ S4 m0 w, O
- new Vue({
$ D; J2 Z1 R* ~4 g/ J+ Y - el: '#app',0 {' w: t _0 q+ U" q5 T
- data: {
9 ]5 v! g( C$ ]+ L6 k7 j+ K# K: W - seen: true
' v+ K5 T4 H% \0 w$ ?4 x! A - }. h& a, B; j U. y( P* W
- })
- v8 T% ^. D1 K% C - </script>
复制代码
1 Z9 x/ f2 B% Y( U- {这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
: M. ^1 |, \0 S- M* K8 {4 u - <pre><a v-bind:href="url">菜鸟教程</a></pre>
* x# O" ?0 V- X7 w# `; l0 ? - </div>9 X$ t- y# m% ~+ n
- 7 y# ? g# k2 a9 D
- <script>. `6 \5 E0 W: @5 n8 b* H
- new Vue({0 K% G0 P2 P' f5 U& l9 F# R: G
- el: '#app',$ g7 G/ p* ?" p& i" ~( c
- data: {# k) G" U; ^$ Z# J
- url: 'http://www.runoob.com'
0 X# T8 `- Q7 g& M( {% Q. z - }
; M2 W1 x) w. d& S- c: _% } - })
. s, v$ ?6 z- F) O% T, d: m - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
* Y7 p8 A) T$ B: ]# z6 o% `
- <div id="app">6 B& s* v1 D% \, w& L, l
- <pre><a v-bind:href="url">Vue参数</a></pre>9 N% x4 k: q& A$ `; U9 O1 ~& I
- ) h: i8 m$ R# P
- </div>
+ a" ~3 j* ]) `* ? - 4 \ V1 |7 A/ v5 y+ k
- <div id="app2">
9 l( c! T8 h- g) k! r3 O - <p v-for="val in arr">- t* y; T/ s7 ^# a$ w
- {{val.a}}
: b) q' B8 I2 g, l% _; ~3 z6 i - </p>
( W' }8 v2 O* x6 \' k5 Z - <a v-on:click="tap">点我</a> M6 k @6 z7 \2 S/ T
- </div>
9 ^4 L& ?( M7 [0 A* d# v; p: y: ^
( _+ I* n3 ]; B. k+ J: Q- * w6 F8 c& `1 c. ?7 q
- <script>
5 g, [# K% O& P5 p - new Vue({
Q# R# Z1 z; X# S& E - el: '#app',2 T9 Q6 y# [. {
- data: {
M6 P: l5 B! m$ m% P4 t- W - url: 'http://www.cncml.com'* V9 k/ L0 T0 ^1 [. s
- }
' o6 r# _. c$ \; F9 ?9 i+ U! i6 u8 W - })& u* b. B* D+ x2 z' u( O
- new Vue({
2 d, }( ^! S7 `5 g - el: '#app2',2 ^" A/ c. }. R" _
- data: {
1 u. r* `! [, T3 ^ - arr:[
N; \2 D2 J$ |+ I) `) y - {a:'bb'},% X& k' ?: s O2 F8 m) C: I
- {a:'cc'}
/ _9 q6 v4 c2 B" y: B% k( p - ]
, f+ a7 Q4 ~% F9 @0 i# f* R - },
# P$ @( z# [# B - methods:{
- r9 A4 R' z @2 x( t k# O - tap : function(){
( F) F+ U# E# h J/ Y* ~5 y% S$ i" b" P - this.arr.unshift({a:'new'})4 d! V( A8 a8 W3 R; H- ]' y& s
- }
# ?8 C6 w" K& n - }: Q* Y! c# a! w/ [9 y4 ]; x! o. B5 o
- })8 z! {3 o- \7 D2 d& \6 f% [
- </script>
复制代码
, X" F$ n6 V; T0 E; q
+ p9 [/ P, O* |: ?1 ]: v9 s5 P2 S
在这里参数是监听的事件名。 7 N9 o! [3 }4 d$ ~4 B
|