|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
: F! K3 d( X1 q; i0 Q% z6 Y - <p>{{ message }}</p>7 ^3 j. H6 \3 v' n' ?3 K' E5 H
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">9 B% t' l# V' N: O" T ?) n# V$ m
- <div v-html="message"></div>3 P/ E9 a9 T9 I7 Y( f' o5 ~3 @
- </div>% q+ W# c& ?* {/ y: H
-
r% Z6 v; D) o' e - <script>
* k# ^+ C, N0 N3 |) d - new Vue({% c8 _$ R- l7 T8 ]$ q
- el: '#app',+ f0 T+ B2 t" {4 U" A9 c
- data: {
( ^/ P5 g5 W; W$ h8 a+ E- k }: K - message: '<h1>菜鸟教程</h1>'
" Q1 R6 z8 G' S0 K" v3 [ - }
; R' q# B6 n3 h" ]0 a1 C7 \ - })
5 d0 K7 o% T; q1 q - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">5 N/ x/ |: }& |9 I$ u
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">5 z9 p' A6 l+ i V2 o5 r" Y: P
- <br><br>$ E0 t! Z! E1 \8 T2 f: a
- <div v-bind:class="{'class1': class1}">
# [0 H, o/ s/ a8 e' y - directiva v-bind:class! n6 `; }' P7 Z4 k8 A6 D7 @
- </div>3 y) ?7 h, v$ F6 x2 _% V
- </div>
% b2 U) _! Q+ z! N) i5 z - ( f6 @8 H$ R1 P' |
- <script>
/ w3 m/ L5 r3 c/ {& { - new Vue({1 H" v" D' `) ]2 V/ t. U& E) ?
- el: '#app',* f7 p/ C* d# g" _4 x$ o
- data:{
; n& c" R7 }+ y - class1: false
& O8 f. J+ E- i6 ^# [: y: S- h - }
+ [9 K7 k4 E4 f- j$ P - });( n' A. I! X- {0 r' t4 }7 ]
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app"> F3 b. q! S4 l: X; j2 E
- {{5+5}}<br>
' U9 M" D. R; P8 } - {{ ok ? 'YES' : 'NO' }}<br>
1 o G7 a1 g! n - {{ message.split('').reverse().join('') }}" }" i8 `2 r+ |3 t
- <div v-bind:id="'list-' + id">菜鸟教程</div>
/ j& p- z* B5 m6 m [# F - </div>2 [# Z( k+ \+ Y5 {- t0 S( q5 T0 q
-
) w% F3 W b. b' K% y, l4 a7 [. r - <script>% b5 U& f( ]9 n, ]) a4 |
- new Vue({
8 T! |9 ]' {1 ^ - el: '#app',6 s2 ~; e) S% m* i7 C
- data: {
5 j! r9 e2 _: B: `- L9 y - ok: true,
0 {4 Q$ r7 `4 l3 Z; {* U% W - message: 'RUNOOB',
7 O& W2 q! q" v( B - id : 1
+ c5 M/ X; }3 N0 I, [) F - }
2 l( A) y- _9 Z - })
7 S) |3 }& Y! G3 { - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">6 d* u/ _ x; ?4 E9 q& ^, F
- <p v-if="seen">现在你看到我了</p>
( Q \! `/ s% \7 G+ D L - </div>
! L) Z3 L6 ]3 n: c1 i7 _ - / x% J, m' M7 T7 H9 n6 f o7 E& W
- <script>
( T5 p4 H: `7 K; L5 T* x - new Vue({% P; N0 t; G# R& h) J `( M) g5 e: p
- el: '#app',2 L/ ]( w. ~6 s& M! z- B
- data: {
- J5 ^5 u& f! @1 @: V - seen: true( G: h; I% _% s; Y3 G
- }
% [& J# ?+ K8 l1 O& k* d - }). _2 t5 j+ H4 d3 w r
- </script>
复制代码
N- @ E9 @9 Z$ N v; b这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
" c4 K0 Q. f2 [5 g/ ^& \" W% E4 @ - <pre><a v-bind:href="url">菜鸟教程</a></pre>; m }) k1 g7 ~3 v2 Z- n6 o
- </div>
, L, p+ `% w7 s9 P' e - 9 g, \. i8 n& Y0 ` P9 P
- <script>
& Y |* M) X4 ? - new Vue({8 B- z& a1 W8 z- s! d
- el: '#app',7 x4 r# ]4 O( `2 _* X+ r. O# [
- data: {6 a% g* V7 d7 e5 K
- url: 'http://www.runoob.com'
% ? G8 g% X, R) J - }
2 i4 S6 [0 \% h" R4 I6 L9 L - })# v9 |" Y4 Q$ Q
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
! [3 y5 J: b S Z4 d: ?) V
- <div id="app">6 I! t! j6 I% ?; D; r5 x% c4 n9 b$ X
- <pre><a v-bind:href="url">Vue参数</a></pre>5 _" r. A" p V: x4 A; o
. M8 v/ \ h6 f4 G7 @- </div>: i/ x- I( w" Q: O$ l- b
( m% f$ a% L2 @- <div id="app2">$ b6 i+ Q* Q. ^& N
- <p v-for="val in arr">
6 i5 r. v$ [9 X4 L) \2 | - {{val.a}}
7 y% h+ f" v% J2 P& ? - </p>' p% U6 T- W0 `+ t* }
- <a v-on:click="tap">点我</a>) Y5 b. c5 i4 a( S; ?; d
- </div>
. `% D9 T( j- h4 h7 b* K- G* e1 n2 K2 V
+ B4 E$ t$ X0 k( C9 j
u i: q( m/ X! N3 Z- <script>! _6 {; r' I; _. X1 t
- new Vue({" z% f: `+ m( Y4 F4 R: g
- el: '#app',
8 l6 Y" a9 ~; W8 d - data: {! n* M ^* S, `1 z# y* ~7 W
- url: 'http://www.cncml.com'# y! u3 `5 g# D d# ?
- }$ E& A3 U9 L3 s4 Q, [ @6 s' ?4 K
- })
3 w; ?9 p4 H. ? e - new Vue({
( a" O7 [( o) f6 p4 c - el: '#app2',. K! X* a8 g% L- D
- data: {6 D$ o5 a" w6 T1 A0 _* y. O
- arr:[
1 S( G0 E: L+ Q( n7 {8 j: [ - {a:'bb'},) n) D& n* j3 J& C- }1 b/ T2 w X6 u
- {a:'cc'}+ R. ~! F0 |: h- d4 Z
- ]
* m5 C" J5 Y i7 G - },
# l. q2 N2 F, R1 n7 H - methods:{( E* G; [/ p; X4 A/ u
- tap : function(){
7 ~( y; a n: ], D3 q X - this.arr.unshift({a:'new'})
]: @' a ? i+ ]3 ?3 l6 D - }1 D& f, r* {2 n* N+ q
- }
, Q R/ \8 X: r; j6 B% _( D - })3 M4 ]) R# a+ n4 C: R
- </script>
复制代码 9 b6 i% @, G+ M( r- k# \* A" s
) F" g% d7 v2 C& s) s3 E* {9 ^
在这里参数是监听的事件名。
* p) {2 G7 ]7 D5 i& t6 M1 a |