|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
, ~7 J! v% v* W, m - <p>{{ message }}</p>
4 D S" h. f2 ~/ D: K - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">5 f8 Q5 J2 c' u/ u- _' b* v
- <div v-html="message"></div>+ L: z. ^5 H) N% V" Y
- </div>
6 J$ D0 k* d+ N4 ] -
( a! \! ?/ \( e4 X! O% u - <script>! o2 J9 g$ J1 d# y6 i+ M
- new Vue({! P8 g+ ]) x. \ ~
- el: '#app',
+ ?3 [) e( b$ f; R* o1 T - data: {! l9 d; y& w+ O% f: r/ {' ]
- message: '<h1>菜鸟教程</h1>'
( @$ ^0 q# }, Y+ i) k' r3 N# W I - }
0 f5 ?& C. b6 h- k; \0 G( [, N- T - })
& a. l7 U, |; f, p, K - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">2 N' {; l; ]% F: s( |: l' M
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
6 f1 C. n2 B) N) I/ k - <br><br>
( j5 E/ ]0 k, a9 r/ A | - <div v-bind:class="{'class1': class1}">
- B1 J" z5 `2 f7 ?( ? - directiva v-bind:class
3 |! c% b# Y8 r - </div>4 ~/ _$ W0 W$ C9 e8 u1 s+ y
- </div>
% M1 h- w9 j& K7 s -
) o; @$ ^$ C# ~ - <script>
, e1 a9 T+ D) B8 N& V( k - new Vue({% H- @ ~/ x8 Y4 D) V
- el: '#app',
0 C. ~+ v! S; y( Q' M - data:{
6 |9 A$ y% R8 m+ J. m) t2 l9 y) e9 { - class1: false
% P$ `) x M" k: t4 o - }/ S8 u2 ~ ]: Q& e, N. B
- }); T/ L+ x$ B4 z
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">! n# Y1 W# |% Q
- {{5+5}}<br>4 a0 ~8 U9 q2 C! A* L1 q
- {{ ok ? 'YES' : 'NO' }}<br>
" o* H _: C0 n7 b; Y! [ - {{ message.split('').reverse().join('') }}4 M8 ?( q" Q. d0 Q$ Q
- <div v-bind:id="'list-' + id">菜鸟教程</div>6 q l& g7 N7 D7 G$ S) l
- </div>5 T1 X8 D; g/ V% S' d8 \
-
$ M. K, S @ u& X - <script>8 Y" D i4 o/ t& e" v3 R& K
- new Vue({
/ a, x# N; ]- P. ~) ~ - el: '#app'," a4 ?* \: i0 n5 P% u
- data: {
5 S0 \# V" g+ r' w+ J; \+ s - ok: true,
3 _1 `& A2 d" i! [9 \4 k; A# X - message: 'RUNOOB',# x/ P3 O1 }2 T- J% q9 D- ^
- id : 1
8 a. s3 T+ y/ _, k - }. ?! G4 @: n2 p+ P, @
- })
, f. A* F9 N' V6 z- o! ^. ~. M4 j - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">, ?; _/ ~ a5 l
- <p v-if="seen">现在你看到我了</p>
$ V& T' e% v5 ]/ I7 L, s - </div>
5 @2 L2 ~. A( N% O% x2 ?" Q -
& P# o7 d4 W1 ?+ @/ d( R - <script>
' a* T1 o' G5 h( E+ |" ~+ _ - new Vue({5 K$ @$ e! }" \: b3 n
- el: '#app',8 a- F: q& V$ T9 F5 I' B
- data: {
- k: ]; D9 ~ k7 i' ^6 W+ ^ - seen: true! k% e) h$ d i* m0 o6 K
- }
$ Z9 G0 a- c+ E0 y# L/ m3 z; Q - })" ]; J) E: Y8 j, z# R
- </script>
复制代码
) z/ @& e* l# v+ a3 |5 I这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
! t1 c. q1 L Q X% Z - <pre><a v-bind:href="url">菜鸟教程</a></pre>
N! K7 Y) b4 s) d# M' j - </div>
0 r: N( L$ \' T* [( B% I5 z' C* ~ - 3 x$ W4 b' ]7 }! A" f' x
- <script>7 ]2 O! W' ?* T; u7 n7 p
- new Vue({
: {- _0 u+ \2 p; r9 x - el: '#app',% S9 P& J1 m( z
- data: {
1 e+ L) D$ Y1 h9 p* j - url: 'http://www.runoob.com'
2 ~; {, e3 T. [3 c5 f7 ] }7 ^7 Q1 o - }
0 @; t I' `( _ - })! J, K% t7 k3 h7 P; Q$ T6 [
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码! n$ t A9 Z9 A+ V
- <div id="app">
8 W9 o8 G5 u, y' _ - <pre><a v-bind:href="url">Vue参数</a></pre>
$ {! p0 a( f, M* U; H9 O: ]& F - 1 f. y1 t) Z3 a
- </div>
& A, O5 E. Y; I9 r) Y4 M
: C$ r& l) [' ~/ j, e: N; B3 y- <div id="app2">) P% R9 X1 p; [ V: h
- <p v-for="val in arr">
' i1 f/ b" W- i! T2 E, k - {{val.a}} k. b( H. ^; A3 X
- </p>
* K* z u0 U' m7 D6 P - <a v-on:click="tap">点我</a>
) i& X7 X5 |& `' P' B! G - </div>
! ~& F7 h6 d# T0 B+ J- | - " R% R0 Y9 l- E! ?$ f5 u
& d/ t* c5 U3 L- <script>
: @1 R \4 y% X; ]- }! C! |+ R2 s - new Vue({
, h" [- f( P6 y: t; y9 W7 ^ - el: '#app',& ^' D4 b6 v8 f8 W
- data: {" T( _: _6 e% p8 L4 p
- url: 'http://www.cncml.com'
1 Y7 \5 m$ @) f/ }' Z5 z - }$ {+ `, F8 i4 H9 u
- })' d% H$ z$ H Z8 Q, V( e
- new Vue({! a/ n: B/ G+ e/ B5 b) w# L
- el: '#app2',
/ B+ T" [8 E9 K! i, }3 V- C8 h - data: {1 y) z% R. {+ v$ S
- arr:[
4 k9 U* V* x. P; [$ _ - {a:'bb'},
! Y5 ]0 {0 ]5 x- z% }* @ - {a:'cc'}9 o: E2 t& L! V' K4 F1 T
- ]
* \3 f9 R% T0 D; @: U - },) Z# E: [: A' B9 K6 ~
- methods:{
/ L# z' r: R( A! [- ~ - tap : function(){
& J J! ^8 C3 ] - this.arr.unshift({a:'new'})
( I1 \1 Z' V2 m8 E( ?. o - }8 {, W. y9 ?1 V+ |; M& o( k+ u
- }3 n9 T" x O# t9 u. A
- })$ u; ]& d, @0 a3 o9 }
- </script>
复制代码
; u! r; x; {: [" w# h1 b8 A: L0 Y0 V' C ~
在这里参数是监听的事件名。
% H+ }8 {2 F& ^ |