|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
! G/ Y' n& C, f# u1 S* ~ - <p>{{ message }}</p>: x! k/ A, l( z! I9 q; S1 W: J$ y$ k0 b! J
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
1 r8 b/ ^3 C* V' u6 [' _, {& J& z - <div v-html="message"></div>+ z/ [7 e/ R( @
- </div>+ A& }* E Z$ L* S* z9 K
- 8 M |9 a6 q ^( \* Q4 {5 y
- <script>
6 y4 N) T, R+ Y - new Vue({4 j3 e. F X' e5 S2 S
- el: '#app',; l9 ^3 m# |! X* z- s, T6 z* G
- data: {6 \% z3 m' k6 o9 M/ I7 a; [7 U
- message: '<h1>菜鸟教程</h1>'
7 Z0 g! m/ K, @ - }; L- @7 V( r7 X; x5 f6 |
- })
/ e0 K1 O2 ~; ]/ {; d6 w - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">/ ~2 u* k* V& h& {; Z! ]8 m0 [
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">1 ] f. s$ d! b* T' U/ B
- <br><br>2 b' b/ C& i0 Y8 h2 z! n0 v [
- <div v-bind:class="{'class1': class1}">/ @6 u- t, D4 \- K, W/ W5 k
- directiva v-bind:class( [* D( _1 r$ U9 e! f/ K
- </div>0 [1 v3 e# W& W' a
- </div>
! l0 u5 |% s# B- o2 X - 9 e0 S. r7 Z1 W+ f' t5 h8 t
- <script>
: n+ u0 ]. c1 x# A* W+ } - new Vue({; i" H' o# ]" {% j
- el: '#app',
* a' u' y4 l$ p' w - data:{
- ^9 E$ U+ S2 g" Q. a( q: U - class1: false( D, Y; r* E5 x$ |$ s( y! b- b
- }* I) m) _: y/ U$ a9 L/ [
- });$ ?7 u+ @0 `' n+ g Q
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
% F) m* @4 |& Y# H+ G6 _ - {{5+5}}<br>4 q2 w& Y# J, \5 A+ G- N# @. x( I. C0 G
- {{ ok ? 'YES' : 'NO' }}<br>. A+ S- b$ l I1 b1 Q
- {{ message.split('').reverse().join('') }}/ D) C! {5 b+ F/ l& n- }
- <div v-bind:id="'list-' + id">菜鸟教程</div>, T5 i6 [+ |5 z0 P. F
- </div>
/ f$ Y* h$ _5 e3 [0 w. u- g - 2 g1 e' T6 G. i0 o
- <script>
! s+ H# o& C, Y, ?# C* V! ] - new Vue({
! x4 L7 H6 x" d* Y# L! c* y& q - el: '#app',! u3 V& \1 u7 L- w/ ?
- data: {2 Z* S- g. I! F7 G) R2 r
- ok: true,
! W- C2 v& L: P) _3 N9 T7 P6 t. w - message: 'RUNOOB',9 t3 o8 g) d# J/ ?( j8 h$ F. D
- id : 1- [5 v* l* |9 G0 D. _' K* z
- }% h; i6 v- q% P) u: [% @( H
- })( x" |* Z: B& e3 f) y5 J; C; C/ C
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">! p% @' h; L5 h" o5 u" Z
- <p v-if="seen">现在你看到我了</p>
6 @3 W& x# A1 Q - </div>( L, t6 R- L4 m; v% [9 E$ l
-
, w" L0 x# X Q/ O. O( _1 e - <script>' q# L1 U5 s" F. O( s9 M* u
- new Vue({
4 s; N# H9 S3 R - el: '#app',$ T# {; F5 a) `- V2 f) r
- data: {+ L+ [" J. _* j6 m
- seen: true
; {/ ?1 D& G( ], M' x - }
/ a* E4 p0 b( c6 M0 C% L/ R2 X - })
! W7 o( @$ g7 ~0 ~9 P - </script>
复制代码 6 o- v, u" S0 C' n- D4 E6 c
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">1 `: L, L7 }* c; Y2 r+ l9 J
- <pre><a v-bind:href="url">菜鸟教程</a></pre>
1 Q" g l+ U- f9 F6 k% p - </div>
2 _! ]. P1 \. V& R4 d - . `0 ~) S) _! ^
- <script>4 v( n5 m! e! h9 c
- new Vue({$ N7 H2 j/ A1 U9 }+ N
- el: '#app',- {* L& j7 u# }: q, j( k
- data: {. [( }0 T9 ]! x# {5 e* Y6 _4 G
- url: 'http://www.runoob.com'
2 ]" e9 ~- a# T. ]; ^/ { c* I - }
' R% M% P; Y, Y - })* |, f( F& n/ x; X; h! u
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
; q6 i8 Y& v* u" ]8 ]% H4 q) j8 c
- <div id="app">
4 D6 o. c+ F( |4 G% g- W - <pre><a v-bind:href="url">Vue参数</a></pre>4 k, R( ^6 @! `4 ^+ {( r
7 y( S1 D8 Q! K- </div>$ t) u6 C* N9 N2 T& q u3 w
- 8 z$ }+ q& {/ m7 h8 Y( n4 N9 l8 D
- <div id="app2">: I9 ^* Y% v& A* k% p3 A1 d
- <p v-for="val in arr"># {9 o7 m. r/ G4 k5 C' s+ p
- {{val.a}}
/ p2 f. ~, v6 G' K) X; c4 B( q - </p>9 \0 z/ O* {) s* {8 ?# ?: h8 W8 [
- <a v-on:click="tap">点我</a>
! `. I8 @/ ?# Z/ R0 l2 y5 h - </div>
2 `0 n$ b7 v I# |4 d) [2 U
) W! B& W# d! J' r% w: H5 F- ; ]" m! J: [& P A
- <script>: p6 M% @( ]: p
- new Vue({
( k! _8 C; h8 u% ]/ V0 ` - el: '#app',+ T. a+ }9 k, d+ r7 {7 a
- data: {' J4 p! O/ j" \' J# F4 v& C0 o
- url: 'http://www.cncml.com'
/ ~3 l0 L; K H- p9 d - }) `/ W$ G5 F1 |& A, P) b; P
- })
, P/ `% a* x, J7 R, s' q - new Vue({, u# `8 O- i" U+ z x2 u& B# |
- el: '#app2',
' S0 E. D4 G( u7 L0 T3 K0 Q - data: { B0 B* e( E, t( L/ b# n5 N
- arr:[
+ S% \6 S" ]9 u - {a:'bb'},4 g/ a) ~ c. o9 M5 t0 c, S$ P$ o
- {a:'cc'}( x) Z6 f3 U* L6 o, `, J; r
- ]
' C: w' T% ^3 c8 O: t) K& b, |" h9 V - },
/ b- q3 k3 T; e" d2 G# j! w- [8 a - methods:{
% D% \8 b- [& E4 E, x5 b2 t6 T V - tap : function(){. N# b0 z$ ]& v" i
- this.arr.unshift({a:'new'})& I1 C. t) V' E( _% [" i$ f
- }. y6 I, w. d* M9 j1 _
- }
- f" k; K x0 X7 o* M7 ?* C: W: j - })
W( Y- z2 L) T5 K; {& ] - </script>
复制代码
7 ]+ I7 ~0 ~: h( z3 {9 E% n9 L! o% A' X7 \) g, Y
在这里参数是监听的事件名。 6 C: A! S% Q2 a9 Z- k
|