|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">( A8 P: k$ T+ E4 l% b9 A: P! \2 q2 L
- <p>{{ message }}</p>8 E/ B6 \2 `3 \% U+ b! ]4 w
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
( A9 ^0 T4 B: h: T# N0 q1 q3 \ - <div v-html="message"></div>
2 x" n9 J0 v6 u( R1 B! P - </div>
9 b1 K0 W; t; L6 W - ; W# _$ s6 L' U8 [7 A* Y
- <script>
3 K, i) o5 l, T" T y/ y' u% S - new Vue({
/ o' X- V0 h: H& {$ X( a - el: '#app',, H+ g5 V3 O! |3 d5 C
- data: {
5 v/ ?4 @. h2 h- H; Q - message: '<h1>菜鸟教程</h1>', v% T0 F' }% f3 q0 a6 D8 u6 w: |
- }; g5 [5 G; M; X4 H! l1 m$ p/ m
- })
* ?. j8 e/ K1 \2 M: v - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">, b! E6 V# p3 H( P [7 ]
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">/ ~) s; r) C; f2 B
- <br><br>
; W! A( @: m& Z1 {7 m* @3 ^ - <div v-bind:class="{'class1': class1}">
1 P7 n+ f$ p* [ - directiva v-bind:class
# q) v# s4 C5 |* C! O8 M - </div># q; p8 H3 @7 ?" C2 \8 c) Z
- </div>
9 M( Z. ?. J- q: h- | - 4 N" w3 ~' m: L& o
- <script>
/ ~( I* ?' U. U0 S - new Vue({
0 f/ Z9 S3 e0 n( R! d - el: '#app',4 r6 g$ @- [- J& O, A; f
- data:{
1 c$ K, B" l( r: E0 O! y1 ^4 o! u - class1: false
6 [( W% T3 d" H1 T( M4 @5 f5 ^8 d - }
; h/ R8 G. E* A$ [5 u# e - });3 @/ ?* E4 C) o; G6 m
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">6 F; E- y9 L, Q: c7 X4 L
- {{5+5}}<br>8 x. F3 z! | Y# d2 c% Q' m7 E
- {{ ok ? 'YES' : 'NO' }}<br>0 E$ R4 z# Q) _: l6 y
- {{ message.split('').reverse().join('') }}2 H9 l( g3 T. y0 S' `* t
- <div v-bind:id="'list-' + id">菜鸟教程</div>, d) F% P" Q0 d) u% g* i$ j! i( v
- </div>
6 [3 P; p7 N, B( B! v& w$ H -
# c( ~1 X8 c( e9 d4 F - <script>& n: L: y8 ?0 L$ }% u1 S
- new Vue({
0 F' _0 T, e1 l6 n8 R0 l4 B - el: '#app',! {7 j+ g" b* }
- data: {" F' l( G6 V$ j1 E7 f% a4 X- Y0 D
- ok: true,2 L4 M) w) L/ ? _8 ]7 {7 U! J
- message: 'RUNOOB',$ I8 g6 L4 ~) v% F/ s
- id : 17 v, D* ]- m2 L1 n( x* z
- }5 o1 P( V' L5 q" ~+ a5 ~, ]
- })
% j% g" D, o/ d0 w - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
2 ?" G+ ]4 Y: F9 H; ?& y - <p v-if="seen">现在你看到我了</p>" g: e" U. B) b( L! C# p
- </div>' l1 b. q( |% G
-
/ c7 a9 k; H4 A, G& p( _, C7 Q9 Z - <script># @/ ~! A `, q) p1 D! e; t& K' O
- new Vue({
9 j- ~% f w! m) ^ - el: '#app',+ G0 g* r) z3 ?/ R9 T* s6 r3 [9 c
- data: {
! k# u2 Z4 P1 S1 f; D) b/ f3 t& [ - seen: true( J1 q+ r, T( _& `# ~1 n/ U
- }( `* L& o' p" `, ^
- })
E' K5 z5 C/ I - </script>
复制代码
5 o1 t9 y$ k8 b/ ?这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">% d$ w* G/ `5 S" r, X, ], F7 Z
- <pre><a v-bind:href="url">菜鸟教程</a></pre>& }4 J9 G/ T* R& G0 p+ {( G% H* ^6 s
- </div>
! i) X& | f3 ?& B -
4 K9 q+ e, B* z4 m5 I( @ - <script>0 G$ ~; `% G Q4 O( @
- new Vue({& u% u. [% L1 M- I, R
- el: '#app', r0 d8 }& ]4 j. J" g' j* M
- data: {5 s- }1 T! o/ A4 [' w8 ~: h) i, @
- url: 'http://www.runoob.com'
" ?1 {: Q7 y8 u - }" K, ^8 m2 _0 {5 a% b: f
- })
1 a7 Q$ N0 P- M0 t2 Z' M - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
, N7 v0 N p& Y" H$ a
- <div id="app">" X9 U: k {- S& U
- <pre><a v-bind:href="url">Vue参数</a></pre>$ k1 }1 K0 {+ j% k
y9 K* j/ K- i0 @' l- </div>9 l/ T1 K3 j h! u5 X. | \4 _
- 1 ^. e; _- x" R6 Z
- <div id="app2"># S$ {+ \! M/ P# S: }
- <p v-for="val in arr">6 J# E3 E+ L8 w; D. ~! I
- {{val.a}}
8 D6 K. f% E) W1 ? - </p>
+ f6 @3 n" y5 E8 Q. ~( C& M4 V/ m - <a v-on:click="tap">点我</a>
! U1 R5 u, Y G) E2 B - </div>
/ g6 T n7 b4 D* _, i4 n
. j* C1 G9 m7 r& a R
. y8 y" _2 u" ~1 h: q. O- <script>1 I/ D1 y F9 o, e6 c
- new Vue({% _$ p; n/ J/ y T5 q9 I( p* V
- el: '#app',# E8 k1 D/ q- Z6 i9 n* }. Z; C
- data: {5 l9 [) B' d- |" |
- url: 'http://www.cncml.com' O, t, m4 w: J$ E
- }5 q1 s* r. B7 U2 @5 p; E3 s# }
- })
3 p% h! j# s# O2 \2 X+ [5 g - new Vue({
7 R7 Z9 }0 k5 Z - el: '#app2',
6 ]! z/ n. F$ E6 N; y - data: {/ S% Y0 L7 Q6 e
- arr:[
% k( A9 l+ [4 }6 s5 a, W - {a:'bb'},& @5 h4 H" C Y* k' F% D4 W
- {a:'cc'}9 P8 ]- z3 X. i
- ]
' t3 {1 C0 q% y- @! ^' Z - },3 A% S4 m% M9 a3 v
- methods:{" q" P, b5 S8 v! I
- tap : function(){
: c- _' k' ` c - this.arr.unshift({a:'new'})
6 C! T5 U. f L9 w4 V - }, |, F0 G I0 u- G* q
- }
% q) f5 j) U; n7 Q9 f - })
& O4 p$ P1 @" R; |% Y0 M# J. Q1 N - </script>
复制代码
& g7 y# [1 c) j3 N2 k s$ Q: L* K
+ G- w( B* u' S( |
在这里参数是监听的事件名。 7 X$ p' W& H$ l$ @9 C
|