|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
8 _5 B' n7 H7 m1 W8 J - <p>{{ message }}</p>
* Y3 ~2 w9 m3 @) p. |3 j - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">; `3 E$ X4 s9 _ V
- <div v-html="message"></div>
+ k- ? {0 K0 _$ j. j1 H - </div>
2 y" @4 j- ]7 W - ; u2 ~( a# m9 n* J2 C+ e5 A
- <script>
# u4 A6 w0 f) s" I: {/ B - new Vue({) M8 Q: w5 Z+ }5 k' O/ `) S
- el: '#app',' m( E1 }7 ?/ H- `: L. e7 p! @
- data: {
; l% a f3 r7 s; H. H8 S - message: '<h1>菜鸟教程</h1>'
: u0 \! I4 G% a - }; `: _& E% |; g! D# O2 B& h
- })
5 a3 \" `1 z% r! z3 m4 N - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
$ C+ `. Q2 O- m% @- a - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
% `! A8 E2 `5 y- N: J3 v - <br><br>. ]) a# J/ R2 d9 R: ^, k
- <div v-bind:class="{'class1': class1}">. B& H j- E: l* F# n7 c' n7 {( q
- directiva v-bind:class/ D" q# a x0 }. u* i! O' G
- </div>
1 o5 @/ O. W) B' _* h: { - </div>5 W1 o; e. O0 M7 k4 i4 T
- : ]: M8 Q7 [" V, ~# {
- <script>
$ i( a7 y3 J5 y$ {4 p0 t# |6 Y" |! b - new Vue({/ u x/ o q k- p; R! p
- el: '#app',
1 B! U4 U3 ]7 T! J# _( B, J7 Q - data:{
6 S$ ]. {" v6 b3 x( v& t - class1: false
8 T* u' C$ H& e- g9 w - }
: q4 G; F- h" i - });! a" s, m* K: T" M0 ^# _
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
6 f( n, C9 l' ?. x) O$ c - {{5+5}}<br>
4 x9 b3 f" F/ A% y7 o% O# _ - {{ ok ? 'YES' : 'NO' }}<br>
* M) v8 o' w) Y: U7 W. H - {{ message.split('').reverse().join('') }}/ [9 J1 p/ P" h( o
- <div v-bind:id="'list-' + id">菜鸟教程</div>0 M0 i3 S; y7 G: |) o% Q' V
- </div>
' L, R4 T. {9 P7 @3 { - ! ]% K: c' V( N/ z
- <script>2 p) `( V6 C1 o% @9 l& ? h
- new Vue({
! l5 ^ g8 v. T% V - el: '#app',! O: @/ L3 z# i6 s- R
- data: {- F2 [7 [5 p3 p
- ok: true,0 Y) O: H$ ^7 K( d
- message: 'RUNOOB',4 F3 O f, E" C: B7 ^. b! V
- id : 1
3 f4 R5 E+ u( A - }
) \" @# T) V% u- G. q - })
8 f& k {1 [8 Y - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
2 j* l& m# W- y6 C6 A - <p v-if="seen">现在你看到我了</p>
$ x- r) a- U: Q% y! b - </div>
4 S# z* x( I% A- O - ; }+ y1 U( f# T( n y+ V4 p
- <script>
# y) j9 t6 j4 ? - new Vue({* A# ~% ]' A$ _: a: N, ~
- el: '#app',7 H% r5 [' t2 v, `) e
- data: {7 y+ t' u C! a/ Q# w+ ~; k
- seen: true
1 l0 m7 A9 H4 x [" T! W6 D( u: A - }0 V& t5 Q' s8 J7 x
- })
9 W$ A9 q0 y1 U* v - </script>
复制代码 , k1 z% m% C9 r* F
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
8 Y. ?9 P( t! H) T2 | - <pre><a v-bind:href="url">菜鸟教程</a></pre>/ D+ R0 f# A3 w/ K
- </div>- |2 u& Q% [; O- n" f
- # i3 o& P* s) v' C
- <script>
' t* L6 X- T! V8 ? - new Vue({
* B! j9 R3 W) c( H# W - el: '#app',
0 A' N5 h) t. d, X" r# f- ^- Z0 ^& |' B - data: {
0 X) |0 W; T' `# B1 | - url: 'http://www.runoob.com'
, x0 ]0 I- G; l' o$ g - }
* @' R$ c/ Y7 [7 D5 a - })
, d* k6 v1 ?% V - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
1 \3 K4 _# r, E7 ^9 t
- <div id="app">
3 _6 Y" T3 i- d& Z0 @ - <pre><a v-bind:href="url">Vue参数</a></pre>5 x( r1 c4 w4 q: h6 X7 Y' v
. w, A* _) e& ?8 r- </div>
% v: ?1 T0 K( U% G" u- u b
D2 h, \* L$ t- <div id="app2">
& k3 X* O5 F, U% K2 q6 L# ]$ X - <p v-for="val in arr">8 i/ Z- M, L+ [" r& U* S
- {{val.a}}, l |) ?* s/ D. ]5 r4 I
- </p>9 P9 F& m' Q- U7 v( Y: e9 A6 o' R
- <a v-on:click="tap">点我</a>8 w3 }4 b9 ]" [' j- ?
- </div>
3 a4 ^' x( d' F: G# _
! I( ^- {2 {* W+ C' Y) @0 P- . {; w4 e* F( D5 D7 D; a5 d
- <script>
3 U# B. E; T1 d; v% p6 ^* r) s - new Vue({8 R! k2 Q! b' {5 V0 J1 o l
- el: '#app',& d9 p0 H3 P8 x- i+ J1 o- ^& n& P' ^
- data: {8 Y9 H$ V8 m) w* _
- url: 'http://www.cncml.com'+ p% r# z/ y1 N! {# v1 p! r+ {
- }
- Z- [6 u8 U8 [ b& _' s, M - })6 [: M# h( J4 a9 ?
- new Vue({
; ]9 J+ x" F9 k - el: '#app2',
% \0 m1 n, U& \ - data: {
/ T8 O( i( z2 i. O! V( J/ M% S1 ~ - arr:[
. X7 a8 V1 S9 V- J - {a:'bb'},6 b+ ^; y. ^4 K! X6 q, P
- {a:'cc'}
5 k7 X( u1 q. V7 c7 E - ]- W( p' l2 h2 s% V
- },; O: O w0 q, B. v; F. V
- methods:{
; k6 C; v, X4 e8 o# h2 W. ~ - tap : function(){
/ q9 G+ g2 O0 [0 Y4 P- I/ N% D3 V - this.arr.unshift({a:'new'})
5 B: q; C% m) t - }
3 u E u, W) m2 f - }
9 o+ T S1 e- q( A. ~' ?4 h! h" Y - })
; K/ q# l: u/ V - </script>
复制代码 ) `" u" Y4 q; |& J1 o+ `
1 {% _6 s/ `! }9 F0 ^! y1 y+ C
在这里参数是监听的事件名。 " C, e+ W6 E& R8 H0 k6 f! t
|