|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
$ G* R1 k6 g' N8 S) N! y - <p>{{ message }}</p>
. l% d+ `+ C$ ^' ^! f* b. _ - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
. e- k& T2 z9 K* U! s - <div v-html="message"></div>
% f. F3 S1 J# V+ X# i1 @. C - </div>
+ G1 I$ G# ~5 d& O4 J -
' Q3 J8 k: h _7 {' f2 } - <script>2 y; }5 ?6 x5 {" s" [
- new Vue({+ M, c# o4 u( `8 l0 O* W' Q! Y5 d
- el: '#app',' X! w/ Y- o0 W' N8 \# `, I
- data: {
% X1 I/ J2 v- C9 r+ O8 E5 w0 Z - message: '<h1>菜鸟教程</h1>'- S' U, G* }! L/ h: p
- }
# m/ N0 x' C9 j0 Q7 P" F - })
. c& r8 z4 k; W( I# X4 L0 { - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
; l% S" e$ W _ - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">$ k( u/ O8 t6 D- B8 h
- <br><br>
: F, F3 Z( I6 H' d3 Z+ h# L - <div v-bind:class="{'class1': class1}">
! M/ Z* ]* b3 k. b, B3 P7 ? - directiva v-bind:class
& F* X" q- O5 @+ c - </div>
6 q; G( @4 }5 v - </div>
$ a6 c9 L9 Y* V7 X, c - $ j$ r' G! _' @
- <script>! O. g% D; s) n4 g1 Z8 r
- new Vue({1 J; D( g) ?. a- T( ~' O
- el: '#app',( r: v# v7 W, F4 j
- data:{
- `3 _) E+ r# }/ l( m6 }/ V - class1: false
1 t s2 v7 @4 Q7 H6 K" u2 l) [ - }+ N! s/ H9 l; b5 M) I- H
- });
/ H/ L6 z& w" R4 E* ]8 _- X - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
& T! Q6 F& Y( N - {{5+5}}<br>3 m+ }: u9 a5 v" {% h5 U* H& }8 s( j
- {{ ok ? 'YES' : 'NO' }}<br>
( u, e% \" Q" h$ H& d" N - {{ message.split('').reverse().join('') }}
. A4 q- u6 C: b( c - <div v-bind:id="'list-' + id">菜鸟教程</div>
1 `0 m" w: e" ?5 n: b6 ]7 s% k) ? - </div>
/ Y% `$ s6 u2 a2 b -
- D; ]* I( J6 Y/ b/ Q - <script>& c O( w% R3 P. i' q. N3 m$ ^4 R
- new Vue({* L0 B1 ^1 b4 R! c: k A% q- k
- el: '#app',4 N8 \* O' C8 U
- data: {
( Z7 ]6 h; N$ j9 w, n- g G - ok: true,
$ ~; J# o7 V+ I) ^: W/ t+ I - message: 'RUNOOB',
, ?- o5 n _; G9 `; ?! a - id : 1
* Q5 z E/ V+ u9 M2 p7 H' s% _ - }
: l: `1 R0 N' B5 N. r5 E. {3 j# w* A - })
- H- J6 s) v4 k3 ~, E* L - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">% p% H6 q, W `" {3 T
- <p v-if="seen">现在你看到我了</p>
9 e3 b4 U5 y: P - </div>
* K) n* {. U; }3 P - 0 g. T2 B* D5 U/ g, q' L
- <script>. M x: P4 V+ M" c/ O" J
- new Vue({
6 m4 X' A- @$ @4 p - el: '#app',
# {6 X' U; R! h$ u: w" c/ k - data: {$ R. a9 C, P/ x1 p) k, v
- seen: true
8 ^0 Y7 n z- O0 v - }
; x' W3 t4 M6 |$ Y* \) M - })
2 K- d s0 N4 a7 x9 C) M1 w - </script>
复制代码
( i, M: z) n7 Z) a, t1 t这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">0 }8 l$ n4 M! d
- <pre><a v-bind:href="url">菜鸟教程</a></pre>
+ T. _* H$ E+ D1 q' P: I - </div>
0 ~' Z' `% l7 r% \' p# [ -
7 p1 ^( ]- y- F: d( p2 |0 b - <script>7 @' @0 D9 q W$ ?! e
- new Vue({
# E8 O/ e+ h7 ?3 K' M% x+ d; ]: G6 d3 q# R - el: '#app',
) ?$ q( c: O8 t( j" ? - data: {
) v# d% b% ?- y0 R6 ?) f( M - url: 'http://www.runoob.com'
5 o8 ^% M3 J/ x% ~5 m) L0 k - }, J" q% `9 C+ r) z7 B! U$ w
- })2 G; v8 K/ S& F8 Q5 K* b
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
! D. K- S$ l, F8 |- \
- <div id="app">
' o8 L% r1 } W4 B# \) W - <pre><a v-bind:href="url">Vue参数</a></pre>. Y4 G* `# ]5 F" I
: M+ F' U) L- R2 ?9 V S3 ~- </div>
" b8 ~, t) o2 o6 L+ Z9 B# r2 W. v - 6 _) G1 x; B5 ?- b5 `' P
- <div id="app2">7 o9 r8 |2 @' t7 Z" I* B
- <p v-for="val in arr"> a0 d. I5 v" h) k; n* g' H0 [( l# x
- {{val.a}}( ^7 X8 b4 P: J% {8 F) C" f
- </p>
( N* }& s- X7 d2 H# g - <a v-on:click="tap">点我</a>: [# G/ K1 l$ V+ v, R) S
- </div>5 u6 ^& n& f2 F! x2 G
" Y0 S) @! ?% \: W) }& y# v- - d' B2 U& b. H8 U4 w9 @
- <script>9 s5 T$ |% r% K" q, {( s. O' F- p- y
- new Vue({
' f! p# i0 F8 Z - el: '#app',
# y3 i& k' L5 ^! v, u - data: {: O( C3 K7 \1 @( s) C" G
- url: 'http://www.cncml.com'' F* C* b3 O' @8 Z( ` V" F
- }7 P; y v: X" c' R
- })* r4 h/ Y8 s# d. s$ w- P
- new Vue({
D8 e* a0 @0 c$ c9 P- k - el: '#app2',
5 L* ~6 p5 l2 @* b K1 X) W; h3 s - data: {+ r. d( @ v. m( `2 f$ L0 I8 \7 g
- arr:[$ e7 @' u7 {1 S5 m2 k6 b
- {a:'bb'},0 C6 L* Q m% F2 I
- {a:'cc'}
' a9 k+ {$ _6 x! d6 g8 q - ]
3 ^) G8 k; @7 Y+ ^' }1 D, V; F' l - },
2 ^/ u6 t& T9 z' p0 Y/ z- Y - methods:{4 _ p# A1 e3 {; O
- tap : function(){
3 a$ O" G9 R- n, \. r% I - this.arr.unshift({a:'new'})3 r: p2 o( q4 s
- } R9 V6 M! O. h! B- Q Z% Y9 u
- }
! y1 _5 q9 I. t, t1 I - })
; n# ], e3 x2 R3 b( {! | - </script>
复制代码
1 t8 w4 `* g t8 a6 {3 @* U3 D- P3 h7 w# {2 _8 U9 P9 y
在这里参数是监听的事件名。 & { ^4 g; e- ~9 U$ A% |
|