|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
) u. j6 \" B4 Q! z) H d: X ^ - <p>{{ message }}</p>
( |8 T8 z) t' w6 G; U - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
0 k5 N! ~# r7 y - <div v-html="message"></div>! m( C# A* g6 C; h
- </div>* C0 `' p, L" i& J9 |/ l- g
-
$ {( t5 [# f; a& u5 O# Z - <script>
/ [1 j- I1 {0 f# x$ x - new Vue({
! j1 j) l% v5 j) B1 U- h- J. s4 d - el: '#app',$ ?# R" F7 o) V4 T
- data: {" l x# {% p, ?! m9 |5 Z+ V# l
- message: '<h1>菜鸟教程</h1>' ?: P) {1 |' d3 O
- }
' I& w6 Y9 Y. x, Z* B - })
+ r) G- s. f2 d$ j - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
0 b3 t4 L& t$ E* T - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">* S2 G% |2 k* w; \5 X, E
- <br><br>6 J9 N% X( ^2 ]
- <div v-bind:class="{'class1': class1}">
( O+ a1 p% N5 q5 e - directiva v-bind:class! e5 w T1 E% ~9 c8 R
- </div>
r1 e; H- H& F - </div>
; k7 z+ ^! f. h9 M% o, Y/ d - , r% G* k9 @; @% \! E
- <script>
5 y& Y9 n \- G, ? - new Vue({
& c. R8 \& n- v8 ?. I/ ? - el: '#app',( }- u, w+ |9 c" j. A6 Z
- data:{
0 i3 H& m% M; h$ m$ n - class1: false
6 k2 J' a* g. P - }1 X! T5 v6 D# V( Z+ P2 k
- });
9 Q+ K* J8 O' c; \4 j/ Q+ F - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
`8 n. t3 U1 z# q7 Q" G - {{5+5}}<br>/ L+ `4 O1 V# s2 f
- {{ ok ? 'YES' : 'NO' }}<br>6 H4 B) U/ z3 q* |4 n
- {{ message.split('').reverse().join('') }}
) ]7 E. \( ^' n4 y0 a - <div v-bind:id="'list-' + id">菜鸟教程</div>: m1 U$ m" @) g
- </div>' n1 a* |' _9 G6 {( d: p
- / i% t, t$ b( }: U' s8 ?
- <script>
. Q3 V8 n) Z* K8 m# t/ q - new Vue({1 E" v5 G" C) X7 W
- el: '#app',
" e! B$ @& x. M% o4 L9 Z; z, h4 ^ - data: {
4 y! _* t1 o" w! Y% m9 h. n% v - ok: true,) r; Y. Y8 K4 P9 Y
- message: 'RUNOOB',, F$ M6 ], ?; G! h4 E
- id : 1; V& T q/ K @) I, C
- }4 U5 ?* X6 N! N0 @9 |
- })
3 ?; i. k f( c$ u - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">3 k( o# `: |* \4 P! C
- <p v-if="seen">现在你看到我了</p>
0 s- w! \9 R* n" V3 `; { - </div>
" K5 F% E- g' l9 d -
' j3 v: a4 p5 S& u* M3 ? - <script>
8 h# O+ ^1 ?, @+ {$ O" c - new Vue({5 x: |* D- l( D& ?% z$ N
- el: '#app',
" ?8 Z6 M$ ~/ n7 X* w* ~ w - data: {" d, u! t* I. r) V, T4 j; V
- seen: true
# a. T4 k$ C* f - }; J' v+ }- t: @# f5 [
- })1 R; C" Q _( B \: u2 h1 x4 h
- </script>
复制代码 % r: {& q5 `( ?& t" T
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
! Z( s9 i/ Q4 Y3 F; Y x# H - <pre><a v-bind:href="url">菜鸟教程</a></pre>) M5 O/ x t; J9 ~
- </div>3 x- e9 F# J/ O2 I
-
4 r M4 n! v- M' C* j - <script>, G2 D. M' b2 s8 W3 s" j2 n4 E
- new Vue({
% z1 N; y3 A$ N - el: '#app',7 R E6 n/ I/ I% u, _1 l
- data: {. R: @1 S: @( K
- url: 'http://www.runoob.com': m" n# g: t6 ^2 U0 X
- }
$ x A6 x) u8 N' o/ V- p x+ L# I - })
4 W+ h1 Z2 Q* q - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码 Y' M* ?" [- O/ i/ G' t) R& E
- <div id="app">
' `. N/ u; x+ n. S$ G - <pre><a v-bind:href="url">Vue参数</a></pre>
4 \/ V+ c0 e* U% S1 C8 Z' m8 Y - / D2 E' _8 i4 [
- </div>* ], R2 p* t7 c
% B( @" [. X3 D# { ^& d- <div id="app2">
' c3 ]5 U; k6 B8 x0 J - <p v-for="val in arr">
7 }- p' Q5 Z$ x - {{val.a}}
, B5 g$ t" ]+ s* A - </p>% \" B% E- l z9 |# v) @$ P Z
- <a v-on:click="tap">点我</a>3 p/ l r; f7 i- o+ O- W
- </div>
s3 z' _5 x5 P; L' N3 \5 a - . k9 ~# Q' L. g% E/ n
- : h7 J) M1 ~6 Y5 ]0 V2 v
- <script>% S- Y1 r+ |/ d5 e
- new Vue({5 o3 b# \& @: H
- el: '#app',) j' [5 z8 i7 D* V" o( S
- data: {
6 Q) G8 e, G2 u' Q2 y5 K) | - url: 'http://www.cncml.com'
- y. R$ M: u" A* p+ B7 j( u - }
! |8 J* v: I M8 o - })
) O' ~% \0 [6 n/ Q% B$ i4 D% T - new Vue({
; H/ S% d7 w& T' Y5 r- j+ m2 ^: d - el: '#app2',7 p# \& c3 {; T% P4 ?. {: v
- data: {
+ U1 Y3 S$ S# S, h$ q - arr:[& V Y; @. A, @5 |3 s' w+ h+ d
- {a:'bb'},
; |$ t( }: m. j: S+ X. w& b - {a:'cc'}$ H( I% L' y( A! |. s7 }
- ]
3 c5 _' q; H7 Y) v - },4 K2 n! }$ C7 w4 V, F3 ~4 l
- methods:{0 m* W/ @" N6 p
- tap : function(){
7 L- r( N, W% e" \ - this.arr.unshift({a:'new'})
: n2 Y9 v! u; z( t* y - }4 C: ]; j7 G- F4 S
- }) m/ f2 A5 |/ x' |0 [6 u1 q
- })
) X5 @1 Z4 q9 U9 L/ u - </script>
复制代码 . M6 w6 u- K9 ?. M5 K, i6 J1 r/ Z
( r! Q6 F l. u7 Q I6 }2 k4 L8 N
在这里参数是监听的事件名。 + x, B" V. `; H
|