|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
1 x& ^8 X+ N2 b7 X% S5 ?8 Y K7 R - <p>{{ message }}</p>* { n) x; Q9 J7 Z! S
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
! B9 P7 Y- Z& s! w - <div v-html="message"></div>3 W7 p; p, {5 f, ?
- </div>% R" ~) ^9 U4 o# @
- ' e- i4 I5 ]- d! b4 n9 L7 u r
- <script>
; ^0 B' `/ ]8 O1 | - new Vue({
+ G0 J. I$ S6 _ P - el: '#app',+ \' q6 j7 a) H" h& H" @0 P
- data: {
8 o. r# m6 Z$ O D H* y; s - message: '<h1>菜鸟教程</h1>'
: _+ F: L n4 V& Y; W9 n5 F - }' m+ ]5 a; h% v7 o# U3 N& j4 [( f
- })
. L' c* d6 M+ o - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">5 r2 H9 j' ^& J2 i6 {
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">5 n1 Y: C1 R9 w, _4 f: a
- <br><br>( R3 s. U( r( m+ |8 C$ l
- <div v-bind:class="{'class1': class1}">
& u$ e9 X: U6 l8 I9 Z - directiva v-bind:class5 _- h$ A1 r- U/ N& U) }& B' {
- </div>
7 `: G( q- ?! i$ M - </div>
6 ^; T) _/ p, m4 I2 \' h -
" K) g9 i0 {6 f* G- b - <script>
* h) c+ s/ y. s# b0 f7 N& P: | - new Vue({" e ~/ j8 x9 ? G
- el: '#app',
- n. o% O9 q9 Z+ J1 C - data:{* @3 ~7 |; Y: Q" T
- class1: false
9 {/ \" n# T& O4 f8 B* f3 X" i - }
2 k m! B) D4 I6 r9 j8 m& Z - });8 e1 s% r2 H6 K& Y. J
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">8 P# `! d Q. ^( \
- {{5+5}}<br>
' u6 X0 L8 I6 B9 g2 @ - {{ ok ? 'YES' : 'NO' }}<br> D" U+ j j) j& R2 Q
- {{ message.split('').reverse().join('') }}
1 z$ a0 [" o% q6 C' G - <div v-bind:id="'list-' + id">菜鸟教程</div>
- Z* r3 M7 b( |. ^5 l! ?7 T - </div>* T- o- D8 F0 f" s* o! ?
-
1 z5 C$ m4 V4 p5 ^* A - <script>6 [" G i1 V" L' ~ k6 D
- new Vue({
' M9 M* h5 l. z% b( W - el: '#app',5 j8 s* a. i( g
- data: {
4 v, H% F+ x/ X - ok: true,/ K/ [; X `% Q0 |
- message: 'RUNOOB',
9 `- G( E2 ^6 Q% d" W5 `& X2 i - id : 10 z# d% G& J7 B7 Q
- }2 J; ]7 B4 e7 x) Q/ y+ j
- })5 b, ~8 }3 P2 A
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app"># L) J( ^( v# O
- <p v-if="seen">现在你看到我了</p>
' `$ ] p' {9 _: a! n3 h# r% T' L - </div>
J: X, b1 j% P -
+ x% D$ }5 y7 k9 y& ^ e - <script>
6 _9 ?) ?) i' b5 Y& z! J) c - new Vue({
9 ^2 [7 B9 D+ R0 k Z7 ?9 ?' w - el: '#app',( \% H) M: I1 C; _6 h6 F/ i
- data: {
" I) n2 u: R0 ` - seen: true* s6 S m8 @: H1 S
- }. b' j; |9 Z/ c2 y" o3 D4 a" \
- })
' e2 P' x& w" P& D - </script>
复制代码 ) W3 c; m3 R" b+ q3 z! G0 X
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
- M4 n$ q. O( `. D% A - <pre><a v-bind:href="url">菜鸟教程</a></pre>
9 ] M$ Z5 `5 l - </div>9 K" h* }7 R6 O/ Q/ ]6 `# U* f* x
-
% M- y$ d& F# C* G4 ?' ` - <script> L4 X& A3 q' ?5 ]+ P' L" H+ c
- new Vue({
6 u4 p) X4 F& f! W - el: '#app',
3 p! [ w% R6 _) [. u - data: {
! W+ R' c# o3 u8 b% C! Q+ v% P9 d9 N - url: 'http://www.runoob.com'
0 M# C6 _, [3 [" ~5 V ^ - }; U; {6 W$ G7 Y4 E: N. d l1 b
- })
* z- W6 g( g- h1 U - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码5 a2 s0 U& r$ W6 ^, [
- <div id="app">
0 N( S! `, X+ z! T9 d8 H( f - <pre><a v-bind:href="url">Vue参数</a></pre>8 j( e6 i- {) x, [; o& G/ D
1 S" G# M' A+ C7 z: z4 w2 A- </div>! [* j/ w+ w% U; O
5 Z2 `! g' o' I7 E- <div id="app2">( i& T. {( H4 W: }
- <p v-for="val in arr"> w: h- g( c# t" o8 |' I% l
- {{val.a}}7 ^' m0 s; W! e9 ~3 d
- </p>
) p9 t" e' m' [ - <a v-on:click="tap">点我</a>
; r g- H: @ @/ U: u- f - </div>
& n% j( M/ u! x8 I5 L
9 `1 L4 M. A% O4 V1 I% }9 S* O4 Z
) W% i! W' J; b- <script>0 { J$ y8 X' J6 V. b3 g- U* J
- new Vue({: D% X6 q: B+ h& u9 s5 W; Y. f( @5 m4 v/ _
- el: '#app',
) D9 z* n7 s" ^ x& G - data: {
' `; |, D+ [7 g9 p7 e - url: 'http://www.cncml.com'9 q2 x6 {) |1 R6 P6 {' Z t
- }
) @4 W2 ?' ]9 [ - })
. c- H2 e3 _4 a* ~, D. U! t+ G - new Vue({
% G$ S- a) _4 _- X/ c z - el: '#app2', l, n; W3 M" O* s4 C2 s% X% J6 P
- data: {; ^! w% O2 Y6 l. q- h: D" R
- arr:[
0 p8 _2 S* U2 C) y1 e4 v7 E- W - {a:'bb'},
7 X8 M. Q; ?1 i. Q% I* E - {a:'cc'}
, j* L. e3 t1 Q5 b, ^% [2 L - ]
$ }9 r$ K4 p2 @: l& h/ [0 z; c - },: u0 y& P7 U4 ^4 m) f# c$ n
- methods:{8 J7 p! e1 }# k( ?& ^
- tap : function(){
$ ^3 g* K/ m ?& a3 f - this.arr.unshift({a:'new'}): g6 E4 G- O' P/ M- t
- }% x) E. d A* S: ?
- }
6 u( e: b8 d- I; |* t! f8 [* n& ` - })
0 _" K a+ s2 O% o, z! Q4 q - </script>
复制代码
9 i1 f/ Q, c9 \) s6 x7 Q+ M9 H. m. M' H6 ` \. E
在这里参数是监听的事件名。 $ ]) I9 A% Y' O0 ?
|