|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
: x8 `; }+ r/ c6 A - <p>{{ message }}</p>
" ?7 {+ ?) i5 e# { - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
$ G% n R5 k0 `/ d# K3 h - <div v-html="message"></div>
4 t. W& ^1 ?4 K7 B" e" X/ L - </div>
1 n5 L. X" O4 g" A, |1 c' J - ; {4 s9 E+ u1 X9 X ]2 F
- <script>- Q9 s0 J$ |- F* o. k- L5 c
- new Vue({
) I; {5 }+ Z: H" u! b; C2 I - el: '#app',
( G1 i0 s( \( Q/ z% f5 b - data: {
0 `% H% I4 i% a4 A! V6 l- c - message: '<h1>菜鸟教程</h1>'. d3 O, [3 r" j# o" x# q
- }
" x- C" x- X( W: a - })0 s6 U1 K+ k, Z9 s" R* p8 g
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
/ L7 ~3 ^& l7 L6 r+ x9 e; ^ - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">7 B8 k! V) k; f9 g
- <br><br>3 }# r* x8 W9 K8 ~" Q8 b: ~9 k
- <div v-bind:class="{'class1': class1}">
0 i& A, X- |" p& w - directiva v-bind:class% m$ J3 q) N: G" d5 T
- </div>
; R6 K. O I( u( {; c$ P5 s, p* _ ] - </div>& r" |! c; q3 |) m
- % G5 l' t8 R- `5 ]9 H0 N
- <script>
7 l; B6 {+ v g. M! I' B - new Vue({( i8 a1 x( E2 Z% B4 ~6 n8 b
- el: '#app',
3 f; i8 w5 N% y6 M! D/ O# W8 H - data:{
9 @$ x- z6 A! e9 ^3 N - class1: false/ Y( G( r& `( a
- }
- U, m" o% b& A, J+ T - });
2 [& Z: v' Q& N - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
6 G) Q7 k1 z& h$ t4 D, y - {{5+5}}<br>! L3 y; Z( H& {' k
- {{ ok ? 'YES' : 'NO' }}<br>9 H% Q w) O% X3 o) Y6 t
- {{ message.split('').reverse().join('') }}
9 H" q- n7 w1 H - <div v-bind:id="'list-' + id">菜鸟教程</div>0 \: |" @3 o" L4 q
- </div>
- u3 A$ p- a! a - . e$ k$ S% m8 f1 W
- <script>) k K3 \! o3 k" i7 x
- new Vue({% w b" f( U1 w6 |7 f- u, p
- el: '#app',
$ G+ v" }1 U P# {1 v$ P - data: {/ C7 n) W# X6 M) f
- ok: true,3 o/ { h T( X! t" ~( Y
- message: 'RUNOOB',% q! Q& s* S4 _# |5 A s0 d* Y; }
- id : 1
/ s; x( }2 T3 O$ k' i4 W - }5 |/ I5 u2 a6 R1 k4 _, a0 _2 A
- })" W4 C4 R; u0 Q; x9 B
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">+ O$ M5 r6 I' Y" k2 h$ A
- <p v-if="seen">现在你看到我了</p>
/ d& Q; j% C- G3 T - </div>& {+ C2 m1 w h, a- O1 x+ J& P
- 5 ~, h1 r; k' X. J
- <script>" ], X$ L E+ ?, X3 B, f
- new Vue({' h! m1 g8 X$ I* w6 N3 t$ ~) C
- el: '#app',' {9 e- o- ~- J2 d* k4 I+ n4 |4 K
- data: {1 c- g4 }% J3 ^, P6 \
- seen: true c/ B# v d! I
- }/ p2 c$ K- m) f6 `/ |* _. W4 o. X
- })
2 c8 o+ s' ~1 ?# ~, i - </script>
复制代码
& q2 h3 M7 [# h( ]7 U P这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">( T: o4 A9 g; o
- <pre><a v-bind:href="url">菜鸟教程</a></pre>
) a+ q2 r. C: j( F9 T, P - </div>
, o+ _ S3 J0 m3 ]0 H" Y - W$ u1 q: _1 _2 ]* w: s2 w4 D
- <script>5 |- _% N7 D$ s1 @" U
- new Vue({
0 W: U7 a5 ] [: k - el: '#app',+ t5 s5 i: L' Z5 J k
- data: {
' j6 |. G) v3 N - url: 'http://www.runoob.com'
3 y, z7 V8 n( C - }
. O; P" r7 C3 _( d, [4 r& A! Z; j - })7 b) I9 [, }; K( ] n
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
& d; e! m% V/ C C5 P0 R
- <div id="app">
$ B6 V3 i9 u% X; b) b - <pre><a v-bind:href="url">Vue参数</a></pre>
1 c' Z. v; Q; _ m. K7 k- P* p9 l
- |0 L! ]' l; ?% p' k; A2 E, m- </div>: J K, h# [: L
- : s- f' o8 H% ^8 W% C" m2 S
- <div id="app2">
6 o; D4 \5 s3 n( {0 e' O* N3 f - <p v-for="val in arr">
2 c( Y. K q( J2 M" |; p - {{val.a}}
& H& a. `" k, I) P' e0 { - </p>6 t( @* Z/ r/ ^; ]
- <a v-on:click="tap">点我</a>
' T: t+ D2 i/ x: r - </div>
- X2 `$ y( r! K' I - - X l+ b9 p- ]3 i
3 \! S+ q1 G- C# t& i- <script>
7 ^$ n6 V& x6 {5 _. W - new Vue({
6 y! ~9 F. |. W4 R5 n - el: '#app',
/ n$ g0 X. h; l+ q& A - data: {
5 J2 l3 ?" |! Y: G; F* s. i' v - url: 'http://www.cncml.com'
1 [, j- ?% Q: @/ k0 S+ m. K - }6 d9 R6 y- Q& t# s' N8 \2 R/ d3 T
- })& K1 O9 X/ i5 u; Q
- new Vue({/ q1 \# S3 e7 O1 c0 t
- el: '#app2',
) j( ?) }4 n& F - data: {
' x5 r; n1 {, a; B# D& \- D1 K - arr:[
! r+ L- a7 p/ O - {a:'bb'},
4 y. R R5 }" v - {a:'cc'}% W& K1 V l* d( i6 s3 y9 E
- ]
! {9 X, [" f- h7 ]( b - },& s ]* V- E) m0 y) `& a6 l
- methods:{6 E. A; ]9 X0 {
- tap : function(){
( ^) l1 H; s" [ - this.arr.unshift({a:'new'})) q. I: _# O' C: G- n# L& `
- }% R+ f) |' A" b4 Y4 u% x) h' ]( O0 {
- }2 C& y$ Y* `) D4 o6 O2 J
- })
' r% j6 e: s7 g0 Q: W0 q1 U q7 U7 ] - </script>
复制代码 1 d% O6 O, w$ _0 P' b; G- L
/ S7 P I' g+ k% r; ~2 N3 q' ]
在这里参数是监听的事件名。 ) G& I& Q/ R. q
|