Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
3 I8 X; S; s6 |( Y3 g - <p>{{ message }}</p>0 O3 t. M1 L, r, M5 P
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
2 m a. ]+ i6 ^" E9 H& N8 Z" c% x) \ - <div v-html="message"></div>- n% z1 s2 A; i1 `( w+ h. i
- </div>+ F, K- b, m% n! X
-
$ } v4 V2 A0 n0 C. U+ V - <script>2 m( j: U3 o* J1 Y
- new Vue({6 I+ y) Q' Y: P' z
- el: '#app',
$ F( b) w% W- u1 r3 \3 ~7 S& F: o - data: {
7 y! Y% k8 F. U/ n: q% d& o0 } - message: '<h1>菜鸟教程</h1>'3 m5 K0 z7 V$ K# } b- i
- }- B+ t0 N' n, N% u
- })# h( _1 u/ {3 C+ ^1 j% {" e
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
5 {, {+ S. n! U$ Q - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">6 a) q- v* i, Q
- <br><br>9 }! \# N+ {1 t# f- R
- <div v-bind:class="{'class1': class1}">* o7 S" b, }7 e9 L
- directiva v-bind:class
, {) V# y; _* Z* V, Q! b% z4 {0 b% p - </div>
4 z' H7 v' i- d - </div>. F- T1 q" k" L
-
2 Z* `) b; e+ V) y# [+ | z - <script>7 j" {) f* t# Q" c3 c
- new Vue({6 Q3 ]% |/ a4 I9 `- j! r
- el: '#app',6 g/ Y: |7 L1 Q( |% s5 J6 ~
- data:{- C& v$ T% I8 b5 y% n+ y
- class1: false
/ @& H, `2 Q* S; q- u - }0 H7 \5 w3 y7 |4 s( W" g2 e; n0 }
- });1 ^, E: R7 C4 Q& J2 i7 Q/ b
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
1 P7 M- i7 w0 ~: j! M8 w$ L7 q( a - {{5+5}}<br>! ~3 J0 l8 t+ }) j+ C
- {{ ok ? 'YES' : 'NO' }}<br>
8 { @& |, ^: Z4 v. e, H - {{ message.split('').reverse().join('') }}0 ?) i5 H6 G. b9 Q! Q' E6 o
- <div v-bind:id="'list-' + id">菜鸟教程</div>
9 o' s$ A* T* N" O+ S - </div>
0 w1 T+ M9 B0 K& k - 7 R/ [4 k$ S, w2 ]7 D9 W* P
- <script>
0 u7 ~7 |( j* N* ^4 {6 R - new Vue({
( _) |$ w( M! n' |- g, ~3 t5 C/ o - el: '#app',$ {8 A2 ]! H& r: z$ D/ J* Y. E: I% c7 ^
- data: {
0 y1 a! n/ m7 p( n - ok: true,
1 h2 o [" @) @3 q* S' t }. n- ? - message: 'RUNOOB',
' P5 z; \- F9 h - id : 1
! I9 t- n. s7 K - }
( Z* x6 {* i9 j - })9 H. u) ^! V3 ^" C" b* ]8 @
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
, t0 C1 ^ g2 w( C# f+ O - <p v-if="seen">现在你看到我了</p>. `4 v- g: h& h# {' p
- </div>0 ^7 E: g6 K. p( \" E) E( }
- & R, p J3 H; y" Y0 Z: i
- <script>
, i/ K0 g; p# y3 @; ^9 o4 U - new Vue({
9 \3 W' y2 ]) K2 c - el: '#app',# l' m: ^3 J6 B) @
- data: {
* K5 c+ M, Z/ l - seen: true3 b7 V+ v0 \! y# |( L1 n: X
- }9 o0 V7 k2 e% R
- })
0 ^& o7 e, z* D9 Q - </script>
复制代码 * J; n/ A; t4 C, o, F+ V9 o
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
' u8 i% \% L8 w - <pre><a v-bind:href="url">菜鸟教程</a></pre>
) }' n2 ]- a/ }% j - </div>
) L. J) x5 [* c( z -
! I: ?1 H: i) L5 S+ c! r - <script>; p# _# M1 L* S; S7 g6 i
- new Vue({
8 z9 y+ o Q+ z* @- \$ e - el: '#app',; {' N& A% _ X& I
- data: {; Q: o7 |. s/ s; t( b( `; l
- url: 'http://www.runoob.com'
+ ^, L) z6 `* M l6 C- |' j - }8 d% i' ^9 O' B: ~
- })
& L0 Z8 r# m6 m6 f - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码8 W4 i$ d( s7 x; F0 P
- <div id="app">
3 p. o, l) D! W( } - <pre><a v-bind:href="url">Vue参数</a></pre>' e' a' q! R& G1 J$ }' _ W
6 l# [3 C0 B$ l' O9 [7 r% ]- </div>4 u; D4 T) D! c3 V
- 6 k$ F/ q1 `6 b1 i/ f
- <div id="app2">
$ P; X! r3 M, A, L* ] - <p v-for="val in arr">
6 e+ }% W8 w& V* g - {{val.a}}8 n, g0 V. @% e- a% n8 H
- </p>& {( N! m# n" Y( Y- ^+ T% ~9 p! B
- <a v-on:click="tap">点我</a>
4 u7 f# H$ a+ T - </div>3 V8 f9 f$ k0 U: y* k' Q4 |
& f" x) u5 }2 F7 u- - D h0 V2 v7 T1 y5 a1 Z3 z! p
- <script>
$ Y Z* }- Z, U) T. p O9 y. Y - new Vue({
: z2 f o0 K4 x3 E0 E/ I$ ~: }9 h! b - el: '#app',
% C) A c: X; A# ?9 `# w - data: {
, }4 o I$ K5 [: \! a6 X) c6 m - url: 'http://www.cncml.com'
: t* g# ?" ~% d" i - } y. P6 D# _6 R6 e
- })
$ Y! k+ `/ P( ?$ e1 P0 D& U Y, t, ? - new Vue({1 X# o d" H. W' N" H
- el: '#app2',
6 @! Y' `+ ?. ?0 S - data: {
/ I% P. Y# l4 J" E) @( c5 r! g - arr:[
8 ~; Q. Q/ W/ @4 o) n - {a:'bb'},# D, A2 i2 X% n) x& k. I6 t! x
- {a:'cc'}3 d& c7 n$ J2 G- |% w
- ]9 C D6 t i$ Y; @* W: b* m
- },$ e7 ]5 q2 z9 | U# [4 a) D
- methods:{7 U+ y3 p" P0 {1 M
- tap : function(){
4 w' A+ M+ j8 R, I6 i - this.arr.unshift({a:'new'}); x- G" s% s; s# A5 \2 Y' I
- }. d, [; m5 ~# M A' E& `& s: k
- }# l% P. H/ E9 c
- })
! b3 V: D% E' I) }* A, ?; L - </script>
复制代码
" N+ W* |' O; \+ n& t. z% P9 ~( C
* c" ?/ C8 v4 X0 Y4 v' T
在这里参数是监听的事件名。 0 D( e! [8 X1 N: S8 K: Y5 ^
|