|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
) k6 `2 Z; Q8 o# b( u* g* O0 j - <p>{{ message }}</p>
; }$ ^/ X" f" V. L( p# {; @: c - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">- l4 l K+ O: A$ K0 A2 b
- <div v-html="message"></div>
% u8 b" F$ w9 w5 s - </div>
, H5 C) H; K7 B- _0 z/ S3 A& g -
' w/ N- _# h1 F( a5 @5 S2 V - <script>. l# s$ r; ?7 M, d
- new Vue({9 _) b/ s0 J# e8 L5 ~
- el: '#app',
. ^! A2 u) }7 Z0 x& j% r7 [ - data: {
& ?/ B& @, @- j; i6 x, {4 K - message: '<h1>菜鸟教程</h1>'
; m5 Z8 L. M; `. n/ I - }
& @6 f! W j/ }8 q. ~ - })
% L0 G& o/ x- f/ T2 Q - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">' {% ]+ |+ r) e! Q5 c7 Z9 b
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">3 c( R% k. o2 z
- <br><br>- h/ J; q/ N0 M1 _
- <div v-bind:class="{'class1': class1}">' s8 {5 t( M; F# }0 G
- directiva v-bind:class
( K& H0 H5 Y! S X2 K( G1 n - </div>7 E. r2 c8 i/ j. I, U l2 p) P
- </div>
. f; ]1 B S% K1 I+ ~2 J+ X - 0 [6 }& e: t6 D
- <script>
0 f! B- q) [( [; g5 Z - new Vue({0 K" B3 x2 Q1 _ w) k; E. y8 `0 X* p
- el: '#app',
# u- X! H4 P* T: D - data:{
# ~% x6 N3 a4 ^7 a! s$ } - class1: false
8 U: o0 P7 L }: `5 f - }
) a5 o' F5 M4 y8 s6 x6 @, s - });
6 O u$ U# ^. t# T - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
; v& `4 s, [( G ] - {{5+5}}<br>0 I/ d! S3 Y1 q; c1 S$ [4 c9 w' z
- {{ ok ? 'YES' : 'NO' }}<br>
7 j) m5 [0 n/ q _+ O - {{ message.split('').reverse().join('') }}
, t: l' h( \; `4 r& E - <div v-bind:id="'list-' + id">菜鸟教程</div>, I% X( Q9 b7 Y. k! X- \( z3 G
- </div>
: v% b: j/ N# o& a - / }5 u' `! w2 G y9 F
- <script>7 D2 E+ j& k: @
- new Vue({+ a; Z* o8 E) f, o
- el: '#app', \' K* V' |; Z" s
- data: {% h3 D% d# d' h& `1 l- c
- ok: true,0 u# q; b+ ?3 R3 b/ ?1 A
- message: 'RUNOOB',
, ?1 ^, @2 }, s - id : 1
* O6 z+ c F* A3 } u) | - }
& ?( ?8 {5 l7 v$ ?) T& B2 _ - })
9 C2 h k0 o* d9 d. e5 g - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">4 b C& {' D+ J
- <p v-if="seen">现在你看到我了</p>
$ H6 E4 ^# ^8 L7 R - </div>( U4 Y6 @/ ^% m" N- z) n
-
1 ~5 [* W$ G% z/ R+ ]0 @8 S - <script>
" S; {0 F7 t6 p' m* k: o3 J - new Vue({
/ m' C# M- }( r1 T+ Q9 ]9 x4 h: Y - el: '#app',
# K9 d) p4 i5 z: y6 x3 C - data: {" L8 c3 T2 ]- f- K6 l# E3 v
- seen: true
/ }* Y; ^- a3 C j - }
' \/ `0 d+ \( c1 ] - })
! @# t1 ^+ Y0 @4 j" W9 a3 f - </script>
复制代码
. O5 g V$ G; F# l7 P6 U这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
9 i* W1 n* X. ~8 e7 K - <pre><a v-bind:href="url">菜鸟教程</a></pre>* m, T: w; ?" s7 N
- </div># C1 M# z3 a5 A f8 R: {# P/ A9 C
- 6 ^2 r$ Y; g5 B9 d
- <script>
{) a7 N8 U4 H6 D3 p" v9 _5 O2 T - new Vue({7 z* X, V5 `3 `9 V T) G: r
- el: '#app',
' X+ W$ _2 k7 i6 f9 Z2 {3 [ - data: {# q) W: }8 `& i% {. W" @
- url: 'http://www.runoob.com'
4 A7 i4 N6 x" w0 X5 R* Y - }* F1 }9 n: X5 ~: ?+ K F/ W
- })$ w V9 c9 R& l$ [$ P' f
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码0 p2 Z0 g- U. P& b, o( V! K
- <div id="app">/ w7 [. o; p/ Z# T, g& Z$ E
- <pre><a v-bind:href="url">Vue参数</a></pre>
. G' b# v+ A5 d
: W E' a% s2 t4 K$ S- </div>
T N# c- ?/ c# D - # r% Y# h! R- Q; ^* J- k. p
- <div id="app2">; K- s' ~5 P0 J8 A" g( Z6 l
- <p v-for="val in arr">
( ?% k d0 C5 N - {{val.a}}
' y$ }( K4 v1 h, Y) ? - </p>
+ [8 v L6 [9 |) f( n - <a v-on:click="tap">点我</a>
% a9 C7 D } F' N+ L& T - </div>
$ i8 ] K8 n( E - ' \) N1 I3 K4 y- b
- * @/ g( G& s3 a# S5 x, v
- <script>
. _* L {) A7 ]7 `$ B' {# a - new Vue({
2 h" f4 A8 |1 p& b& J" n3 @ - el: '#app',
7 E |% M$ P# d - data: {8 r2 R$ o2 f+ c4 E! n
- url: 'http://www.cncml.com'
' t4 a1 h1 j0 p% I, S: v$ B; Q - }/ E$ t5 ^/ Y$ M, x8 L. ?% b
- })8 H' N) U8 x. j- G6 `" A7 I
- new Vue({+ U. x6 {; \$ A2 D9 m3 [1 G
- el: '#app2',0 t3 M7 N# M5 S [. ?4 P2 f
- data: {
2 ?# `, e8 m! }' @- ]9 P - arr:[( c# M9 }6 P$ g' D+ ^" t
- {a:'bb'},% V8 V! M; w1 m$ b+ W: x
- {a:'cc'}$ c& t0 ]3 d9 b4 M# L: V3 |' K
- ]
1 o/ M) B2 N: j0 L2 A - },7 I+ a$ C5 F$ _* \# g
- methods:{3 M+ ^9 v% P& ^2 f$ a+ T& Z
- tap : function(){' M3 ], P$ E' p
- this.arr.unshift({a:'new'})0 i- S3 x8 I2 K# S- V( H/ v+ E
- }
# K! s- I. W5 B' G9 c - }
6 ?5 V; G# w" R" Z( y - })( V: e7 ?/ W% i+ l, S, q
- </script>
复制代码 ( C5 P8 ~3 N1 v
" \ u* K# h4 e# ~: a6 }: ~
在这里参数是监听的事件名。
9 |% b" a9 Z: t3 A5 Q8 [3 W2 ^; [ |