|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">9 z5 x5 |' s! Z$ t% w3 _
- <p>{{ message }}</p>8 @4 }: [' P) W) j0 _
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
9 B3 J* b1 T" x) z: o' [ - <div v-html="message"></div> G4 A1 C- R1 V8 L8 P
- </div>
! g, a, } L4 a6 {+ t, ]$ }7 { - 3 o! ~$ a6 T5 P
- <script>
$ p8 X" B- m/ \1 N* P% n - new Vue({# }; ?. u% C- f
- el: '#app',/ @" S" r9 X9 f1 Y
- data: {
- Z, y0 L: l. A& t6 Z3 q - message: '<h1>菜鸟教程</h1>'( S Z- a9 S- E" s0 p( C/ v/ j I- `
- }4 E) R1 a9 A$ j: H! ^3 ~
- })" \1 ^! h& g' F" U3 D4 k y
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">. ^$ G" T# T) p3 N3 ^! `
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">$ B5 g% d9 {; n
- <br><br>
6 s) [/ N1 f7 ~8 v, i u" M - <div v-bind:class="{'class1': class1}">9 [+ p8 f) e) A+ _! ~
- directiva v-bind:class5 g0 u" l. r$ y" U; z
- </div>) R4 B4 R/ F% k8 y
- </div>& z+ B U7 b2 x0 o( B5 g4 t
- : j. w% I# c+ s' e, y$ X8 y% y
- <script>
/ p( x- b8 Y) H7 S6 Q' T! L - new Vue({
7 B# p/ M5 P# u# e, i3 h1 \- `7 ? - el: '#app',3 S, j8 B7 M9 b$ C. ^/ W6 Y, r
- data:{
( {) ]$ I$ q, U5 n* H - class1: false
+ _) u& J& P) E( m - }
5 Y' P F3 b! P - });. ~, }6 P( q0 Y2 ?0 s0 d+ e8 a
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
, T; ?6 B: P3 `% I9 v- ~% C - {{5+5}}<br>, n- A' o7 t9 i+ ~+ O% }
- {{ ok ? 'YES' : 'NO' }}<br>4 H; E7 I" A) q( q( ?
- {{ message.split('').reverse().join('') }}. l. M) }# i& K
- <div v-bind:id="'list-' + id">菜鸟教程</div>
" {3 U) q+ C1 J6 Z! t: F' e: ? - </div>- U7 V( `$ c& ?- J6 q
-
9 d1 O1 b1 u/ _: |' G9 s# z$ |* j - <script>
5 g$ p1 _, U# { - new Vue({
) i+ B3 G0 S/ ^! S9 {: J* ^ } - el: '#app',3 x2 U' U( Z/ }- U9 b" h8 Z
- data: {7 N7 }5 D, }3 U1 ?; @: Z- f: Y% \6 Z
- ok: true,
( t# U7 @9 g. X) n, P5 F - message: 'RUNOOB',! S* E5 g! U$ a$ F; g1 I! A
- id : 1
8 s% P/ N2 r7 X - }0 I( C, J# O) B
- })% w& E2 p, U3 S# v, m$ d% ]
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">/ I0 M5 f$ C5 g% S- `
- <p v-if="seen">现在你看到我了</p>: t; D4 S3 V3 L" L
- </div>
/ F- ` b# o! J: ^ -
% v R- ~$ Q/ N. s - <script>7 E& N3 l, _0 V. g6 y5 ?' q. @
- new Vue({
( h, s7 ^* i( @7 ^% o/ Q - el: '#app',# r' Y K- C) n6 X3 p, c: b
- data: {
+ Q8 C2 s2 W" u! x8 V/ { - seen: true" U3 }5 _+ a" G, J/ ]
- }
2 u5 \! z# H, F+ R2 a8 {: f) X - })) w! q( q$ F; V, N, a+ x
- </script>
复制代码
( s$ P- F% c2 a" k: x2 t这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
! ^' x3 _2 ]8 S- a5 ^& @) p6 n - <pre><a v-bind:href="url">菜鸟教程</a></pre>
" c H3 j/ U5 O7 y, Y% T, G - </div>8 h& n0 X2 H7 {
- 3 k" ~2 [- N' y. j$ l
- <script>
9 ^7 p0 c( T. \% o - new Vue({6 n* {7 f3 r" G8 Q& F2 b
- el: '#app',
) W3 {2 r8 s! U1 W/ C4 \ - data: {
# b$ ?# P$ n7 ]; A, r4 T$ R - url: 'http://www.runoob.com'
1 D0 `5 [$ N! v, `$ H9 J - }
7 }( u0 e9 v7 M% Y" a% N6 Y n& i - }); Q* v/ k9 Z# p' [' P/ d! S) B2 c) r
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码5 X( G( b/ h+ ^
- <div id="app">
T1 y s; ^5 A0 s( | - <pre><a v-bind:href="url">Vue参数</a></pre>! W3 y/ [0 I$ d( ]9 d: L
0 H3 Y$ A2 t" L! }, p6 \* ?- </div>
) {$ d" p- X7 b g* u' P2 ^
) ^# R1 _' O& w5 c* c+ _1 A- <div id="app2">
! C4 {2 Z, v" t! w2 i. x - <p v-for="val in arr">6 ^* k" d- {& Z6 L" j, \
- {{val.a}}6 p' v& r; w& d2 ?1 K$ w
- </p>
% v& K" A1 Z1 f - <a v-on:click="tap">点我</a>4 Q1 [4 u5 n% `) d0 g( m2 i
- </div>, l, \! F: f" p0 d3 G
: N% C) @# g9 R) ^4 ^- $ p4 k* g8 b3 A! c3 N- p! G
- <script>/ ]: c) H8 N, v k! @' e( T
- new Vue({
: r8 V8 v! n; M$ E: B - el: '#app', N9 W. ?) D' |: b2 l
- data: {
7 a0 K/ ?' |' Y5 P9 _ - url: 'http://www.cncml.com'
q# t; Q6 o1 T1 k F - }$ g+ v. y. U% f5 n* q
- })) n' W5 C% T' a& w. H7 V2 u6 B+ ^ {
- new Vue({
$ o2 b! A/ d8 c$ Z" z8 M6 \6 E - el: '#app2',% v$ z/ f9 z `7 J
- data: {! V8 ~2 D$ I5 I- ~' Q, P
- arr:[
9 u4 h! D0 \* A# s - {a:'bb'},: C, g$ }5 |. v y1 e. w6 }! s
- {a:'cc'}
. L$ n" s8 D) \8 b( B! X - ]0 R: f" I/ q; _6 ]( f
- },9 T; _: M& i4 _) D2 }, ?; u6 }
- methods:{
# g7 o! y' A4 l, K" ^4 ? - tap : function(){ p$ q- v2 i8 |% j* [& [& c/ h% B
- this.arr.unshift({a:'new'})
- ` O0 O) F8 ~( | - }; U8 g7 Z5 E+ A( ?
- }" T/ \& \4 G+ Y0 Q" I) G3 S
- })2 q' k/ ?9 {& p" `( K
- </script>
复制代码
. r; `0 N# p+ }8 R$ G/ |$ o) j1 d. E+ x6 U
在这里参数是监听的事件名。 4 ^/ b8 J% p, X
|