|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
0 W& D3 i1 O$ A+ u& L; ~ - <p>{{ message }}</p>
5 O5 O$ ^% u" P! @ - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">. H2 q B0 ~8 U, M
- <div v-html="message"></div>
5 Z1 \( ?! _2 X: m! A - </div>
, w# w) P: i# Q+ l) N! s& U. ^4 a - # I( F6 p" p4 Y3 }
- <script>
- ?- T# I) K% v( @/ t% E - new Vue({
' c( }! |0 |- n: s/ e0 ~3 R9 v - el: '#app',
@9 M( t! k8 ^; C# Z( ]6 ~7 A& { - data: {8 \3 U1 S( a$ p4 n! g6 B
- message: '<h1>菜鸟教程</h1>': a6 R' ] z' Y4 J
- }0 S1 c" u. _- S5 w" J6 L/ R- W' u
- })- K7 Y! Z* Q8 f3 h6 b3 g: I' Z) b1 s
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">* \0 X: n7 O' J9 R& ]& |
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">8 a I1 t* y9 B9 }
- <br><br>8 @0 Z' X) H2 n7 Q
- <div v-bind:class="{'class1': class1}">4 p1 |: N" i3 f3 g
- directiva v-bind:class( p* [# q \- Q K( n8 B& t
- </div>
/ \' N: u8 U4 f. N7 a, i- U, w" ` - </div>
# O6 |5 P0 j( V9 r6 H- ] -
( g: p( n8 `2 Y3 d - <script>
: z2 B: m1 Q. t% V9 M) ]0 p: m - new Vue({
/ j+ u2 m) \* X0 O+ l - el: '#app',0 C2 d4 e ~4 b( |) w
- data:{
4 j, F& f0 \7 H8 O; d - class1: false/ O4 |" h0 i4 y, k0 R3 W* p% e% K( n
- }& L1 H4 m/ o# i4 Z7 ^8 I0 o
- });. s7 H8 I% o0 C$ Y
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">! ^; R% x* }) z1 A2 y
- {{5+5}}<br>
, _( k/ r; n0 g- Y4 Y - {{ ok ? 'YES' : 'NO' }}<br> _% @' c R8 f+ Q3 x
- {{ message.split('').reverse().join('') }}0 I! B% d f2 A
- <div v-bind:id="'list-' + id">菜鸟教程</div># o8 M: b8 G/ H' H" D/ w
- </div>
6 `2 ^) k( F6 y# A6 [ -
3 ?, Y" X- D( ]7 G( g0 X4 s) K) _ - <script>
! R2 m2 u o/ C, p% M; R0 [! m& G - new Vue({1 f" R5 Z" n) R" `
- el: '#app',
3 Z4 n1 Y% { V: e7 W3 X1 B - data: {
4 h4 C+ k1 n7 V1 `% N7 \ - ok: true,; N% M& O4 N! t
- message: 'RUNOOB',: Y8 a4 c5 T$ E! U l4 e' C0 @
- id : 1
8 u" b" N' P1 i* P# x - }
: y- V/ `5 k0 \2 t* W - })! W' e0 s$ s' h1 @* q g! J
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">8 z5 p( r [ ?: k
- <p v-if="seen">现在你看到我了</p>
0 ^" ?% n- ]4 { - </div>
) p; v- H* I" f% x3 d' t7 g - & d4 f. J/ f4 f5 z
- <script>
0 l4 z- d2 M9 |* p0 |4 U% k% _ - new Vue({1 x. i7 t) y; g% n8 U8 O
- el: '#app',
% O9 E7 i# }# b2 s - data: {, l% X7 N+ I% c
- seen: true
* e% n$ g9 Q$ S$ m - }
& R/ J1 j2 u/ D ] - })# R7 B3 k i. C) a f
- </script>
复制代码 , T1 P. C+ U' Z5 ^5 g: y" h& G
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
2 t X' u3 |9 F; E6 |! { - <pre><a v-bind:href="url">菜鸟教程</a></pre>
5 u6 I6 j0 v& [, [$ z1 i/ d% U- ] - </div>
b8 Z8 R- g/ Y' i - 3 M7 Q4 E! L" p p R; U
- <script>
, X d6 r7 R5 Y' e' ]' I7 { - new Vue({
+ }: n( t9 J$ _ - el: '#app',
2 Z- n! W q/ X. L - data: {
. \4 _+ l( K4 d! i* W - url: 'http://www.runoob.com'0 F- X% \8 @) s0 T
- }& ~" O, V- e9 Z9 O8 i: ?
- })
1 |6 P3 K- _4 B( S0 k Y - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
& F0 P' h! f. |, T
- <div id="app">
4 V7 W/ q/ k$ Q) n$ \ - <pre><a v-bind:href="url">Vue参数</a></pre>: ^; F! y+ d4 @0 v8 L5 G1 C9 ^
- m7 n% Q+ c }$ a! K
- </div>5 H: f# l6 W$ j
- : G% W) J9 f# v( j
- <div id="app2">
% i: y0 o, K# |5 Z$ | - <p v-for="val in arr">
8 R, P8 f T* o$ `& u. y! U - {{val.a}}
7 c; [/ n" A/ b$ b9 x) E - </p>/ K7 d- x( m$ d4 g, l
- <a v-on:click="tap">点我</a> u$ n) ]6 j' n' A' P* \8 c, V4 s
- </div>3 L( B5 l8 \9 C/ W2 b
- 4 n- X8 P6 O3 u- [; U
- 8 [* t1 B' o& p" T
- <script>
- N, P; r7 V+ C+ o+ W8 D& P - new Vue({+ t2 Q; s2 }$ a2 `$ E
- el: '#app',' s# u+ L, p( L8 D9 N2 q
- data: {
5 I& `4 |- D z - url: 'http://www.cncml.com'. e" Z3 Q3 `) |! s
- }2 i# f4 ]- C& ~
- })$ k$ V% l9 h* O3 R! t% v* p
- new Vue({
5 x" }+ h' k$ s l1 n) E$ ]" T. _: s: K - el: '#app2',
7 s! Y# d% |6 z) Z# A; Y - data: {
& S' `4 ]+ s0 @ - arr:[
8 T* J# u7 _( Z" M8 g - {a:'bb'}, s) s" Q9 L! e4 A4 Q( q
- {a:'cc'}7 l# y: H/ c- i% Z
- ]
/ q% E8 M8 @9 W5 q) O - },
' p3 E5 D4 ` V+ ]7 E3 u9 @$ G" U - methods:{
, y+ E% q, i2 a - tap : function(){
! d) z/ o3 \- ^( ?4 M% K - this.arr.unshift({a:'new'})
' A2 ^! Z% g- \$ f! W! ` v8 `9 ]7 S - }
~( W9 O& t% r: n$ r2 { - }+ ~9 ]6 i* Y' D Y
- })% l/ |' _% {, } m$ K
- </script>
复制代码
4 ~6 [8 v8 c7 t3 B6 L6 O q; {' W! n: b1 K0 F
在这里参数是监听的事件名。 ) G3 G. Y: C3 F$ j0 h y
|