Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
4 p; j4 y$ @0 W) j3 ^8 Q8 ^( u - <p>{{ message }}</p>
( n3 @6 X1 b0 R3 e4 B+ O& X( o: N3 V - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
" h1 A7 M1 P( W# Q% d& b - <div v-html="message"></div>2 e! x- `5 H2 T9 z W. e# w
- </div>0 n9 c* @$ v" l1 w1 m8 U$ W$ v
-
4 @* p" |6 Q) J' {+ O4 j - <script>
, X' N' p8 E! A+ P: T - new Vue({
. i v/ w- ?2 k$ O' R, | - el: '#app',' X3 S# X5 A J" n
- data: {
8 \7 q4 g# c2 x3 K; `) P- p - message: '<h1>菜鸟教程</h1>'; }, L6 y: ]7 J* B( \8 E
- }
5 w: m: _0 ~$ G) m - })1 v4 ~# }, q z3 D% }
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
! B1 J+ ]- L8 K' m% ^ - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">! g( B1 Z$ d" f0 |# c
- <br><br>" h" l6 C6 U7 t3 F6 E% d, V" j, Q
- <div v-bind:class="{'class1': class1}">
+ I+ o7 o5 l1 p; E6 q1 ~1 r - directiva v-bind:class
/ T" l- O$ X# d - </div>- p0 x# \% u% Y6 s3 f
- </div>
; D8 k( ?8 K" ?! S! ~/ F& X& n - " u) X& r: O" I. o+ B9 a, q
- <script>
8 P% |) ]. F9 d1 ]" Q - new Vue({8 l# J: Q$ j" P8 Y6 n. F! I) ~+ x
- el: '#app',/ x! k4 Z( K5 Y+ E% H+ m
- data:{
! o! l* g f! x) P; U7 Z( | - class1: false* U8 f- w p1 P u9 ^
- }
; N' k t$ ~6 @; U7 S2 e3 m - });% q s7 O: ^* o& i1 @
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
9 D4 o! u5 |8 x9 O# X) L - {{5+5}}<br>
- e8 E) s c' f, ?& [5 ]1 G - {{ ok ? 'YES' : 'NO' }}<br>. |2 s2 t* O* N$ r& v. q. X
- {{ message.split('').reverse().join('') }}
4 N# N; ~2 E& N1 d; i2 y( z& a - <div v-bind:id="'list-' + id">菜鸟教程</div>
7 K& ]. I' x9 v" `4 b - </div>" p8 h" q1 q: A
-
6 l" K7 z3 h5 D6 r - <script>6 n% n# }# q' v$ }7 @
- new Vue({. i5 z$ Y, g7 ?" i1 d: Q; T
- el: '#app',
+ M7 f; \# h& P: V: s; m1 j - data: {
/ W% `6 N. U a2 G: o1 u - ok: true," m4 ^) }) ~! t' ^; G# N
- message: 'RUNOOB',% d4 ^) x7 x; }4 J, y
- id : 1
8 T, T) [" A9 d% [# s( p* m - }7 @3 q. Y7 p) j9 M2 u. _( X* ]6 m
- })
+ j$ N# n6 ]8 x5 a$ x - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">4 c A" t" M+ M7 y v
- <p v-if="seen">现在你看到我了</p># M/ F0 t0 @, j7 y1 Z7 |4 Y
- </div>
" a: k; u( b2 @2 ^ - ( R; U Z( a7 [* b0 I4 j# `
- <script>( \2 v9 W$ c! T, _9 m
- new Vue({
) q" P. I: T: A; t p; S - el: '#app',
' c! Q/ X# a2 F2 y- M- W - data: {3 l( O# C k4 {* {
- seen: true
! W" Y! b* f6 v2 _/ \: u' d* ` - }
" X: E5 V) S% b9 O; t - }), D2 e6 x/ T3 q( I4 }5 P z+ l
- </script>
复制代码 $ \+ y& G1 n0 N J
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
9 Z/ R; H2 L$ i4 x" |" O - <pre><a v-bind:href="url">菜鸟教程</a></pre>
" m& j. n. K6 e3 a. Z - </div>0 a& `% M0 K3 I- C
-
" D) t( Y3 g" a) ^, V& Z/ Y. S - <script>
$ c3 b$ S/ v/ ]: H) M4 | - new Vue({& {$ n( {, ?9 `
- el: '#app',# \3 b* \) a8 i2 k% c5 e7 [2 s
- data: {
4 w; R8 U4 c- }: b. r - url: 'http://www.runoob.com' u6 c2 V' @$ y$ {( T
- }
+ M; R1 n+ R; P: t$ T2 J# R' t - })
# T# C( F. h+ ?* h& n" j - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
% n1 l9 X$ y, U- f2 [+ b
- <div id="app">: p J- X" g$ t+ a# g& v
- <pre><a v-bind:href="url">Vue参数</a></pre>. \. x# O: i3 F8 H1 H4 P5 K2 D
9 O: [( p c( R o( z- </div>
& h' R4 k, q' K% M
' B2 K/ R; A/ i# Q- <div id="app2">1 F5 k' x* D. B4 A, C1 l9 V g1 }9 `
- <p v-for="val in arr">
+ b q7 [2 `3 y1 E2 \ - {{val.a}}
* Y. U% a6 }! ?: ^4 G* }$ I - </p>
' \2 P. r1 q6 Q6 f8 ]* A% o- | - <a v-on:click="tap">点我</a>
3 R" }6 p) ^, k3 F1 P - </div>
: \0 W. y" i1 P; |- n - 7 b, g6 A, i1 \1 h
- + P+ |% W1 A+ a% O- H5 x" ~2 h
- <script>- z- G0 U( b* O$ o
- new Vue({. i X; _+ r/ w4 ^9 V
- el: '#app',% w+ H0 {) T# a
- data: {
" V* a( u% ?- `* l2 ~ - url: 'http://www.cncml.com'( k6 u3 t7 o& N$ f* J0 ?6 V/ A
- }
* }2 X. _' b- S {& K; R3 k - })/ c2 c5 b. z6 v! W0 B X
- new Vue({
+ X; x) @2 O; o$ s - el: '#app2',( b+ F( Y3 g, z3 \3 A& R7 N/ a5 E
- data: {
" S0 d* l, \7 M: m, R; U; A; J - arr:[
9 s/ w9 {8 B' M! |( a - {a:'bb'}, P7 Y# s* K' @, i3 T7 O: M
- {a:'cc'}* z. h0 F$ c( ?2 K! r6 f9 X
- ]9 U* l9 t8 j2 l/ F9 V% i
- },
: }8 P: e0 s9 v4 ^+ c* q - methods:{
' @* ]8 w, u6 [8 ~0 n5 x) j' N - tap : function(){7 i& n. \, K; L$ f& x' C7 G5 Z1 [
- this.arr.unshift({a:'new'})) c2 b( I$ h+ E& n2 v
- }
' \. `4 s; Y8 J7 o - }9 P; D0 l' N! k d
- })# a# d# j" ]1 z' [7 X9 v$ `
- </script>
复制代码
. A$ k2 W* W0 y* H: a2 @% A
/ r: d/ z, c3 Q) B: Z0 x
在这里参数是监听的事件名。 % e$ x; R' i& B9 i; j1 r
|