|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">6 @* ^4 \5 w2 z) g
- <p>{{ message }}</p>
, n+ i2 a4 y5 ^& u - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
" s9 \; \3 ?1 E8 B4 T6 I - <div v-html="message"></div>4 Q3 n: ^% x$ R6 e8 O
- </div>6 q7 [& f) t4 [ F- N
-
. }2 W* [7 i) z/ o9 \: s2 v - <script>) k- @ f- Y+ W- g" Z+ D$ _$ q
- new Vue({
- E. x f$ f: W" G# A) ` - el: '#app',; w* v q0 G( q
- data: {. G, Y$ ^4 W- ] o; ^
- message: '<h1>菜鸟教程</h1>'( R' A: L3 ~8 x2 S0 ~; v; w# j
- }
8 c- E9 N' e1 ^9 s) ~ - })
e3 C r w0 r" |7 o1 L - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
; s4 L) ?4 ?/ Q, ?, T7 a. T8 X j - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
1 A2 C) a: O/ o( Z4 H- g b$ K6 } - <br><br>
: {9 @# O7 I0 ]" ~5 l8 V+ Z - <div v-bind:class="{'class1': class1}">- j5 e( r. |- b3 _* ?; W
- directiva v-bind:class
8 l7 ]5 [, o4 v0 D( E, r* J - </div>4 a6 o1 S) _# ]+ r. H( z8 q
- </div>5 s+ z: k( O0 H. K4 N, R
- 2 J( Y1 p2 F* T4 g: R
- <script># M% n/ H3 n/ g, X. `) A$ C
- new Vue({8 \8 ^ ?# r! K) r+ G
- el: '#app',
, A. {* g! z' S. W& ^ - data:{0 }! [6 b' T0 o2 |0 p# ]- I% ]
- class1: false
, }7 C, n' Y; |8 f, F Z - }
) W# E& Y4 }6 p) }1 f, [ - });- z1 l( i! [7 s/ G1 d
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
3 B: x: g! x+ d& r - {{5+5}}<br>
# u6 o6 |9 }, S' d - {{ ok ? 'YES' : 'NO' }}<br>+ N" s" Q% e) e/ N( j1 K+ Y
- {{ message.split('').reverse().join('') }}0 q+ A3 L# c: P' f
- <div v-bind:id="'list-' + id">菜鸟教程</div>* g# Y4 d5 B3 c a3 F
- </div>
. ]2 z% C- H3 F* t/ ?% U: m - Q f& T* x- _4 ^0 b
- <script>
& V1 X3 A( W& x - new Vue({% Z/ q) r5 I6 M, u) T
- el: '#app',7 Y( [. }9 g* R+ v; G4 F
- data: {! X/ S" C# k! L/ O' T" t6 Q
- ok: true,4 [( q0 D# q9 K* t5 C! V) E, @
- message: 'RUNOOB',
* @. O( k: E$ Y: K" ? - id : 1
4 x( d0 ]) i- D5 G. k - }
! X: O( c6 y" [9 f3 y8 M* k2 q2 {3 r( ] - }) K# N$ S; c! G) X: F) \8 u
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
~/ {0 x& f. F1 P; t7 P9 q - <p v-if="seen">现在你看到我了</p>5 k/ _, ]: T2 _1 L
- </div>7 g0 c5 a* c8 K7 G- U2 r/ y* k B% M
-
6 K% v. w+ W/ z. ?8 b- }0 @3 L - <script>5 B! ?' v( i6 w# h
- new Vue({
N; D1 g( k+ d" N - el: '#app',
: L9 ]: W h& W$ s3 Q) k - data: {
, y- u2 b: A7 A4 P6 H' y3 @ - seen: true1 Z8 n5 t3 V/ _8 V2 y' B& H
- }4 a9 `% @; T) i' O( S! x
- })6 h8 [1 c: h2 s: n
- </script>
复制代码
0 \& h/ `/ g* o& {. [' B4 j这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">: {, f9 Z* P7 m( l& e( i9 V
- <pre><a v-bind:href="url">菜鸟教程</a></pre>, w3 v- {# o. y$ ^, ?+ I
- </div>
7 Y& l p, u+ E0 k -
) {! x0 q) s0 Q* a- D - <script> c4 Y* C* j8 R1 U- ?4 ~
- new Vue({6 i8 l( C7 P- J$ t6 N, R
- el: '#app',
# r, {! j8 H2 P8 R7 k( {8 y4 \$ p - data: {
: {2 `, c- ^1 G# Q! B+ t( O* v - url: 'http://www.runoob.com'
( l, v8 u$ U7 ]1 O8 A/ u - }$ ~" _+ |& h5 {5 k& R$ P( w
- })
5 q/ o* n7 U4 f; ^; Z4 W( B% @- o7 g - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
2 M. Y B2 j- \9 A6 R" r
- <div id="app">
4 r" i7 Z3 X8 c& Z3 Z - <pre><a v-bind:href="url">Vue参数</a></pre>
" Z" Y$ d! [. D `6 Q) l
0 T' B* a1 U9 j# W- </div>
k) Z6 a' k# M- `* S
" ]" G' h; f0 }$ k# P- <div id="app2">
6 `& I7 }4 ^; A. Y9 d/ |; H - <p v-for="val in arr">) k6 H1 m' Y, M$ e$ w
- {{val.a}}
- Z! Y- S6 X { - </p>7 ?1 D# C6 ?" H% J& S/ W$ K
- <a v-on:click="tap">点我</a>0 R# O4 W5 z2 J2 o3 g; K9 B/ _
- </div>+ M o& W5 c1 P2 R6 a/ ^6 t' c
" d# Z$ c6 c7 w( b+ A
1 M& M/ ]. k/ y( t% y- <script>
. j& Z. t0 }( m- q0 ?/ Q - new Vue({
$ B( _0 O. ]6 h/ O# u' D* l - el: '#app',
) h+ D/ K& g0 c+ S# m! y - data: {
& u+ t1 o' U5 x - url: 'http://www.cncml.com'( g6 q8 X8 ~* `0 S, [
- }
+ J2 N9 l( |' i, e - })
; B' V+ K! v. Y: Q; Y- h7 j - new Vue({' X6 O5 q; i7 B" i" Z
- el: '#app2',
7 l" I" y {4 j% |! a, u# R, M, w - data: {: M' K7 i, H: X5 ~8 S
- arr:[+ @" s$ R! X# B0 h
- {a:'bb'},
' z" w6 @+ Y/ w, E9 S. H/ ^5 i - {a:'cc'}
" ^/ F* ?3 |3 m- L4 k$ H9 H7 h1 q - ]* J# p8 A8 F% b- n# v$ g) M: D
- },3 J, R4 C: \1 k, `( I
- methods:{
& f9 w2 m( ^& L- ]! K3 @* j7 w& I - tap : function(){
3 P8 f9 }3 M8 T+ l - this.arr.unshift({a:'new'})$ h' @! z2 V3 L% o$ n" C+ [
- }/ T' d, g# U! U8 B/ a. U# b
- }! e+ N5 r2 f0 i% T
- })
' @' `" O; b9 C( s; v9 { - </script>
复制代码
; r! t @2 o0 ]& g- r# t) _6 u9 A
在这里参数是监听的事件名。 * U+ G8 T0 N% ~" v" k; {6 N
|