Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">- p6 q, j& }1 J( Y& G
- <p>{{ message }}</p>% q+ a: K- C( B1 @
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
% M' D( T* ^7 y+ o - <div v-html="message"></div>
9 K) Y; a- u/ i# z5 ?' [8 k0 S - </div>6 K+ Z- O6 x) p1 z) n$ o7 n6 M
-
( Y" E* e2 x$ W) O - <script>/ j9 z0 i) e" A3 C) \
- new Vue({
+ q, y7 a7 M: h6 k2 V - el: '#app',
* B( \7 b' q: O: |4 m: t1 g - data: { [; I K" D G! U2 X
- message: '<h1>菜鸟教程</h1>'1 u! ?* d( P1 Q$ b
- }( X/ a. D' v! b# ~/ q# R8 x ]
- })
4 H2 D {4 x: Q4 {% J - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app"> w. a6 ]- \$ K, |6 {- ?' x i
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">* L4 R J/ c9 |9 P+ l; _
- <br><br>
9 d) Q* F, S0 T9 g- S. S% `) l - <div v-bind:class="{'class1': class1}">- v( G& e4 K4 U% {
- directiva v-bind:class
0 T! J: r# \! A9 | - </div>8 O5 C/ c, \2 c5 ~$ [
- </div>
^+ N! ~7 J" d7 f; S& {1 _ - + _$ N" _. s+ M+ N% I- |! }
- <script> s2 g( i' Q% t4 L! {4 R" \
- new Vue({$ v8 _: H9 `" F3 c( R) A# O
- el: '#app',
2 ]1 ?% g* j! k1 m$ T7 \0 S - data:{" B3 W- {- x1 G- p4 V0 e4 `9 t
- class1: false6 h7 m, @, o/ \* m e
- }+ B+ z, ~' |; @) o& |/ M, Z
- });
j! t% p: r1 V% q - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">% l$ F& ~4 q0 E4 o# K6 x$ j& T
- {{5+5}}<br>- v) D. ^. P% @# D$ A2 g
- {{ ok ? 'YES' : 'NO' }}<br># {$ q6 f) I3 `; [! U! P
- {{ message.split('').reverse().join('') }}5 N5 d' c5 v- ]! b, u# E t
- <div v-bind:id="'list-' + id">菜鸟教程</div>
`( G' r }/ o E; ?6 d( k$ f8 Q - </div>0 T! i& }% H1 A s: x/ L& Q
-
% R0 l8 |1 @& X& w/ ?) y - <script>) h: G" }- Z( w" A( v
- new Vue({4 y( u1 t1 {! }
- el: '#app',1 L. `: I% R* s \3 Q
- data: {
; \) X, [, y! g3 r; C/ D6 ] - ok: true,
2 ~2 u" D6 _- c4 ] - message: 'RUNOOB',
& c2 |- P/ i0 ]% ?. ~" R - id : 1% y! I1 J- n/ j9 @
- }1 p( H/ {, ?* w2 d
- })- U6 Z& F( Z5 ~5 D4 }2 u- G% u8 u
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
3 g% T8 p% f, n/ t" W% o9 f: d9 }- q - <p v-if="seen">现在你看到我了</p>
7 Y2 v5 I1 a1 o' J5 F, ]; M: R - </div>
" A9 p; Q! ]! W7 r. K0 v* \ - . l# x K: ?7 \5 H6 {3 b9 C
- <script>
, F9 W4 ~5 Z% a$ M/ C- B( X" g9 s - new Vue({
/ ~3 `5 e; V0 N" E& A. u - el: '#app',8 ^+ i/ h! Z1 U' K8 V3 `
- data: {
# D: f. O: K# J - seen: true
0 H% G" L; B7 k Q0 f" _' C! q - }9 K+ L4 j6 X" n. Y
- })
; H/ U+ Z5 _+ `/ G: }- Y- b. ` - </script>
复制代码
; Y5 J" v4 ?7 x( ]- s" x这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">! I4 }0 | \9 I
- <pre><a v-bind:href="url">菜鸟教程</a></pre>
. m1 P, U4 p, j; T2 ] - </div>
. ?+ y7 f1 [" Q/ f: W - 9 j+ z2 [. h; s* \, d. x0 g
- <script>
% x u+ `, q+ Y - new Vue({
5 J0 }! w: I+ m0 e1 c# t - el: '#app',, z3 I5 q: C8 c& i
- data: {
' @* }1 ` V: a5 X* m- \ - url: 'http://www.runoob.com'( S% a, m' g: o# H+ h3 g! _3 B
- }
' {! Y- d4 J. I1 z# z5 w( \ - })' A3 x# g8 R; U1 Z1 {
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
. n' c8 V& m% ~
- <div id="app">/ z4 R; a; N4 l; a' Y
- <pre><a v-bind:href="url">Vue参数</a></pre>. p) x! Y1 ]# h! z1 @! _. N. V
& Q9 ?! J& \; g$ j# l7 B5 G- </div>" n( ^, Y: D+ p5 Z
/ F) ^% U+ Q, a# u! o0 L- <div id="app2">
7 |. v$ G- Y* B - <p v-for="val in arr"> c2 o* v# F" B. S+ h# |* T8 k& o. l
- {{val.a}}8 |1 c) n. I2 ]; D, `
- </p> {- [1 {+ J% Q% L& ~/ b& ^
- <a v-on:click="tap">点我</a>
" U7 y4 a5 b3 J0 k - </div>
* c8 ]2 l( f- ?
+ A( ~# D* V1 t7 z! o( d
" a% ` A# G( @; ~- <script>
3 R. n C% t9 O# A9 P/ s - new Vue({
3 [# {8 H- ]# }4 g - el: '#app',
! W$ ~5 {6 X3 n7 |" `0 \9 q - data: {& h( y# @; @# W5 s! S$ d) P
- url: 'http://www.cncml.com'/ o& b% v. m2 x* W
- }
3 e) f- a$ W: A0 ? x$ Z% t - })3 i* Y, R' s' u
- new Vue({
9 I0 x. k" V2 ]9 L - el: '#app2',/ Y. p& h3 x- B' S- E- h4 y* m
- data: {
$ |6 t5 f/ R1 P! I3 X5 O - arr:[" U+ U" z# H2 J2 `2 ?
- {a:'bb'},
( V- t& H3 r/ N+ h - {a:'cc'}
& H2 g) s" E4 {" _ - ]
) P* B! ^1 _# Q) z; O. ?1 ] - },- _& h G/ X. P# L) l
- methods:{( @. R$ s* v3 j/ F9 w) u
- tap : function(){4 r7 H- |3 n% Z+ v( B4 e
- this.arr.unshift({a:'new'})0 \/ c5 _. N# p2 a( o$ N
- }
; |5 P3 \6 U. B6 }4 `; ~ - }
5 ~) o. s8 e1 C. I4 O0 S - }). d1 V$ i. o/ K4 h
- </script>
复制代码
! _* v7 L" w/ d: [/ G r/ D; T" G* c
在这里参数是监听的事件名。 1 L2 I6 H4 W0 \
|