|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
# f/ W2 v% l* i - <p>{{ message }}</p>0 h. X2 W; z2 M0 w& A* ]& f
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
* ~' e( W( `0 @ - <div v-html="message"></div>
+ b0 @0 G1 [, w8 r: i% E. U - </div>8 V5 Z1 P' Y. `& [! d' l
- 7 Z2 |2 c4 M3 e8 E
- <script>& D# R* r2 F7 H5 D9 Q7 O; e
- new Vue({: g" ?) p: a; a1 u# d# e
- el: '#app',
: d0 y' N& K' F - data: {: T$ A) _3 x4 ]9 S* D
- message: '<h1>菜鸟教程</h1>'
" e: c" |. V+ g; l, A4 x - }
0 h7 B+ A* X- Z' i - })* c5 k5 S! g4 H- B
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">: [- m6 v$ N3 {3 ?' _
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">) y% Q$ M$ e. q, R& d+ Z
- <br><br>- _$ a0 h6 v" N
- <div v-bind:class="{'class1': class1}">2 L: n& V) u) {% j" Q1 g& e
- directiva v-bind:class( u- l' Q7 X4 F0 y
- </div>3 I+ y+ `* N0 ?0 _' q
- </div>4 f5 ?5 {( z2 {. Y" _, y6 m
- - s" V2 }' z, v+ [$ V2 x5 v* N6 I
- <script>
& ?- G* c6 {& g9 h) [" i6 a1 b - new Vue({1 f+ s( h& s* X! J
- el: '#app',3 e0 w+ P) q# \5 E) e6 p
- data:{
/ P. ?/ O* @1 r5 ^3 g. t0 d - class1: false
- Z& m& j& M& o. I - }2 X; b" i! g* a4 q" j: Y
- });1 e3 R/ G* T4 x6 I
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">7 \( w$ t4 K+ [) J* x0 H0 F6 |6 \" d
- {{5+5}}<br>
! ^% S. D% {; y0 { - {{ ok ? 'YES' : 'NO' }}<br>
, P9 K0 {1 ^& X, u - {{ message.split('').reverse().join('') }}
4 k1 T; O- Y( e! L% n - <div v-bind:id="'list-' + id">菜鸟教程</div>
5 Q+ Y% Y: _: j9 I: f. E/ g - </div>
9 p/ q$ N+ r! M2 t" k) p -
+ E# O: b; C2 d/ o' y& f, Q - <script>8 N# v& U+ [: L- J$ L5 b, t
- new Vue({7 u9 e2 S- ]/ {: z0 B/ H s
- el: '#app',( o4 P6 b. _/ M$ \' I% N" Y, A9 a3 }# K
- data: {
5 j- c! v. O, p: M - ok: true,6 n0 S! }; @, `5 n* W, V3 R% I
- message: 'RUNOOB',
; j: r! I) i7 T) v$ s2 F - id : 12 r9 z( b$ _! R
- }/ z. D1 B& P5 I1 a* H1 w
- })
8 I8 V, ~; H; A) s4 M - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">) X! h5 G& x# f2 o
- <p v-if="seen">现在你看到我了</p>) X5 v1 U5 a0 Y6 H. J
- </div>( Z4 _! Q* l' f/ \ I5 j l; Y
- . C" [7 g6 X5 N: w5 y V$ y( ]
- <script>* ~% m" E5 a: |; `$ d6 A
- new Vue({! T$ I1 p8 \$ v! G$ s& L( i
- el: '#app',+ `4 e5 G& {3 e! ], G* Q$ W* ^) M: w
- data: {9 O* d& m& G# A% S
- seen: true; l* O/ N5 D4 \# B3 Q' S& @# |- E
- }0 Q- d D: z7 ~% o: v
- })
K6 Z: D+ q2 u - </script>
复制代码 * H f0 C( X- \/ R! H% E8 k; s& g, T
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">( P3 R, ?9 b8 m9 s$ D: `
- <pre><a v-bind:href="url">菜鸟教程</a></pre> w! q+ Y6 e9 v# E2 z& D6 B0 f
- </div>2 K- A2 o4 Q& W, W! j# U9 u$ w
- $ Y+ [) D5 G+ T/ j* O ]' N. n5 Z
- <script>, C7 }; U! W6 H) m& r6 y
- new Vue({) u+ G- }6 a0 \% T
- el: '#app',
% F7 j% P" t* h i1 Y K - data: {
7 j- o7 }. u& E. B9 ^ - url: 'http://www.runoob.com'6 N3 g4 p, ^7 C4 m' _/ M
- }+ d* W; k' @' l
- })) ~" s0 W! l7 @$ Y) U, f
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码2 @( v& i U: F
- <div id="app">& B5 k [' M4 f9 \
- <pre><a v-bind:href="url">Vue参数</a></pre>
! ?/ f4 v2 J9 `% p
. W$ Y3 H4 c+ J. B% X$ [! K: Q3 o- </div>
{( O' M* o, s) u/ ]/ e6 L - ) `) N! { \ ~ M' x) p
- <div id="app2">
5 _+ a( Y+ N. A3 a9 J- f - <p v-for="val in arr">
! B$ N% b1 S' L7 z$ f; y - {{val.a}}
8 @* i; j5 D, R5 l. o( k" R- C& M - </p>
1 j. }' N9 ]& N0 V/ } - <a v-on:click="tap">点我</a>
3 `( E+ X4 v# Y, F, y! K0 a - </div>
) p2 Q. D' G+ j0 s5 e1 `
7 r" ]2 @% X" W9 `8 H6 t- * ^3 \& Z2 g' u$ O4 f5 \
- <script>
L7 J# d; G0 y - new Vue({
: {) b, a+ z3 t1 ]# s8 U4 e1 T5 D: w - el: '#app',
. U Y+ s) O6 u z - data: {
' o1 \. s$ p9 ?! f) I9 a' F6 H4 K; r( Q - url: 'http://www.cncml.com'6 K' _( Z {2 J
- }* C" }: E/ \3 U! r
- })
" Y: q1 @9 V# { - new Vue({! W$ K& M- H" b: }3 x& W) D! b
- el: '#app2',+ F( D" }% N8 j1 N- g
- data: {
: }2 }. \- m8 U1 v3 e) J7 {4 d( q - arr:[
Z( S- c6 H5 t/ \ G: @9 H+ H* a - {a:'bb'},; R( `8 f$ A1 x: ? h- y! h
- {a:'cc'}9 I8 M3 ], D& M* l; P! f7 ^
- ]
! f" O/ v8 ?& W - },
$ U, z& T% N) I - methods:{5 F' q) f: G# b$ r1 O; X' [# ]" G' k
- tap : function(){* N% {3 \+ s" E) C+ R' U3 C
- this.arr.unshift({a:'new'}). f7 B6 i' k) S3 I2 Q b- u/ \1 M0 I) i; A
- }% {) `) D7 d2 P0 _
- }' H9 Y! q+ R) E* @7 Q4 d" s$ v
- })/ i# t* E- N7 l" Y& a
- </script>
复制代码
Z. r% k) X! ]& @" b4 v- @9 e) M& j5 k: W, j
在这里参数是监听的事件名。
( i, e0 b8 u J* s: ?4 B |