|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">' q: A. j* Q. ?5 B9 A! N: T8 p
- <p>{{ message }}</p>. j* Y# ]* C- H5 O2 X; f. d2 u, [
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
# M( A% X5 C, j* j$ E - <div v-html="message"></div>6 `& ^, ^$ s- T+ s* [
- </div>
1 o) E7 K6 m- t) F# r* r: L! F -
" z/ _, O! @' a0 N1 r) X - <script>
) N2 T/ |) ^! ^7 ~) \ - new Vue({
, e+ t; J' u% ^ - el: '#app',
5 r/ U; j7 H7 o2 K; _7 I - data: {% k1 F) f1 @# M8 R+ q' j0 z
- message: '<h1>菜鸟教程</h1>'- y% X/ K, ]9 |7 x
- }
0 W, M, S. I" A - })
% d% X5 C/ c. j+ u( v - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
* ^! d' T$ ~$ r' _. R" D - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">" A6 B; d+ ]% I* O4 |6 F
- <br><br>
6 d/ }4 h) ?- }' v5 o - <div v-bind:class="{'class1': class1}">" q( l' Y; j! {$ B, Q1 E
- directiva v-bind:class
1 p" u, q) A( o* {' E5 X - </div>0 [! y( W9 N: l* p7 [) R! E* f' s* `
- </div>9 p- L3 d1 \* c0 X
- 2 u0 d' b( E5 n4 d: z
- <script>
; p2 W8 r q; _0 Q Z - new Vue({
. S- r% \8 T5 z0 e - el: '#app',
/ X# M% j' f, K% Q0 H" o6 F, `8 B& B - data:{9 V# i5 _& E+ h" N: |* J
- class1: false
- ?! R# y& U/ K8 y' W - }2 P2 [: L" B. ]* p- M7 X
- });$ ^0 u1 _, {9 K( j U9 j
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
2 R% m! O7 I9 f; ^' h - {{5+5}}<br>$ R2 c" U7 j& K; d
- {{ ok ? 'YES' : 'NO' }}<br>
' C' q: o4 T9 m - {{ message.split('').reverse().join('') }}9 a' ?: y% G, A% y8 X+ M- f
- <div v-bind:id="'list-' + id">菜鸟教程</div>
: M' s2 _ @! E8 z; B( W8 v; ~ - </div>) I8 T$ j( y: T) Z
-
9 y; S8 P2 @0 h g& e% R - <script>
. Z( E) g& u" M; T0 S" W - new Vue({
1 M% \- m; m* B6 V3 n4 o - el: '#app',
! Q4 N. l1 w5 s' P1 M/ D& e# c - data: {
( v8 o5 H: d9 P: w P* M - ok: true,
& V3 S& m' Y( h* K# {" ~; F - message: 'RUNOOB',& K0 d" K) d+ x; C! U" a, b
- id : 1 j! A. Q" O( x) R6 z" P6 X3 P
- }
; T. |8 B3 X2 I - })1 R- K* k3 p% ~, M5 P" `: x, M
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
: S: m, Q) n+ p( s& {9 v) p% ~ - <p v-if="seen">现在你看到我了</p>! C6 N0 Z- ]8 A) h& q
- </div>* y Q( j- s+ v! H
-
) n! T3 J& i4 m+ }& }6 d. z S* c - <script>0 S$ n- o: C9 J
- new Vue({
6 X, v! f% m" ^1 \9 q* v- n - el: '#app',
) A" P r8 ]* C' K; W* U: y# f - data: {
0 v* [$ G- S3 \/ r( t6 s0 }9 x) a! w% N - seen: true$ g# \* Z3 O9 |9 s! u
- }
. j+ ?% _; X$ A* q/ M& z0 D) l - })
! r/ [- B4 X" B9 k - </script>
复制代码
6 _) \- v/ I& e+ E/ ]; w) D这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">' C2 }, _9 K5 s) C! i. a5 m
- <pre><a v-bind:href="url">菜鸟教程</a></pre>" Y, q2 n9 \% g6 T. R# y. l2 J
- </div># S! j5 }, W6 r9 X8 w. q
- - \+ r0 D, J! u, R6 i! ]$ `$ [
- <script>
6 ?# X4 M: r' Q5 f8 y+ a - new Vue({
5 w. j U# c+ h8 h - el: '#app',
9 Z% {) P, ?: N/ i# r+ w - data: {( O/ \7 E3 S3 U& a7 [6 [ [
- url: 'http://www.runoob.com'3 r6 J/ F1 I( {6 A; F, |7 E
- }% U" s% m5 E' g" J" B9 }6 j
- })
) T" s9 D8 r/ U9 f - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码/ k& `0 \9 F( y
- <div id="app">
% @5 ?# S) L7 v" _% {' K - <pre><a v-bind:href="url">Vue参数</a></pre>6 |# F6 r, w$ m9 ~2 ^, V2 H
$ R, T, k6 C( ^( R' X& t- </div>$ I2 A$ }+ w. m1 _
- [5 `3 `, o6 V; @, w8 D- <div id="app2">8 _1 t5 \1 V( `/ l, {% U" `
- <p v-for="val in arr">9 X. Y8 O. f9 ^! A
- {{val.a}}* Y4 D, P& \3 P0 F
- </p>
9 t: J" `) p6 K1 Z9 g$ i4 I7 T6 g - <a v-on:click="tap">点我</a>- L' P2 p& c1 d9 L; |' l- i1 B. q
- </div>: H" n5 G _/ B
- + q) B& Q8 ?/ p- L1 i+ r* }
- 2 [: P" r$ m, X& p2 B! w# [! c
- <script>- D9 ?$ W* e9 W- T4 `" W: u
- new Vue({
/ Z @" }8 P( Q4 l$ S' \, n - el: '#app',! K0 _- Y4 i8 j6 g
- data: {# Z- G! Z% w1 I4 O! X0 ~# W
- url: 'http://www.cncml.com'5 K( B9 s6 L7 X6 ?3 L$ z
- }9 T! w6 M/ H2 H4 O2 g h
- })4 d9 d2 Q4 H* p( u, V( \
- new Vue({- H' }- H) K5 S n9 u. l9 h
- el: '#app2',
1 F, L$ m9 _( J - data: {
0 O z9 _: l6 O& ^ - arr:[
1 D3 J( v; {4 F D6 `3 o F" d" h - {a:'bb'},
) a( K, a6 Q6 w! `6 x3 G- h - {a:'cc'}% T) G, y, o6 e2 r1 z2 ^
- ]
1 U& s' W8 C/ M* p. q2 u4 ? - }, b; h* N V! D C6 k! l/ J& c
- methods:{
4 i3 c, \, K% I7 b( { - tap : function(){% ]6 m2 P* S8 `& o# I- k& |. `
- this.arr.unshift({a:'new'})
9 s& C9 O3 j2 G- X" w. V, X - }' E7 x3 M" i. K+ L
- }
) I5 Y6 \9 A! k" ? - })$ {1 A I/ C' S i* z; b
- </script>
复制代码 ( h9 a7 m- Q" H1 z; e
* S2 m7 K5 l0 L' v* T, n
在这里参数是监听的事件名。 ! ?* ]6 ~( m. g9 G
|