Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
3 d- I" `3 {' e+ k1 Y+ }+ { - <p>{{ message }}</p>
: q* E0 d% Z" s: v. ` - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">" U% ?3 m' p/ [3 Q6 F8 D) ?
- <div v-html="message"></div>
1 ~3 [' l b! U' B- C - </div>
# f4 M0 ^7 h8 L9 M: N/ o -
8 m& J9 \1 b8 G - <script>& f) f( L+ X+ x1 G5 R, z+ O
- new Vue({: O) j$ d; g' n; v6 R; G v0 n
- el: '#app',
9 t: U: D' Z, U - data: {6 b& Q! w0 x5 q# K" t. Y
- message: '<h1>菜鸟教程</h1>'
2 `! n* I% O2 v% D6 G) s - }
: e( w. |) G& \) w - })
8 G" A- @" I1 A+ b# J" [0 f - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">, a5 D y" n# ~. i
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
/ s' k5 P; T# ? - <br><br>+ h0 c) w5 O/ H6 G6 d6 w
- <div v-bind:class="{'class1': class1}">
7 b1 @: L2 a5 U0 U9 Y6 N4 y - directiva v-bind:class8 F* x; L' ~" ?9 l
- </div>+ t& e5 h) c4 F6 G; b8 z
- </div>7 R; J, ^5 R/ a+ L1 o5 H
- 0 A- v+ d+ `4 ?# o3 N
- <script>
) u5 \# Y% L0 g8 g% v- X; C6 E - new Vue({
! \+ A' V; y2 q ^. r - el: '#app',) d9 ^* ?; M" Y' A
- data:{4 _! J3 M% ?% c2 W
- class1: false& t& M# r% D; G: ?" ?7 q" c4 k
- }1 O) d3 e$ I- _( r# l3 f3 ^# ^0 H
- });% L) P- w, L% e! g/ |
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app"># d6 u+ Y5 d4 ~; r, r$ R6 k5 u( m7 x1 y
- {{5+5}}<br>
! ~) h2 u; }6 _; t1 V6 b. [- e - {{ ok ? 'YES' : 'NO' }}<br>6 \: s) |) _) ~8 {8 l% y0 h: k
- {{ message.split('').reverse().join('') }}
7 m) M l2 S+ h5 d* M- Q3 w - <div v-bind:id="'list-' + id">菜鸟教程</div>9 j: o( }, L @0 O
- </div>& I; U! R8 h* @6 b# h" ~" W/ F
-
! ]! h5 ~7 j" G- v9 G; Y8 P- @! A - <script>. K0 l4 o: ]0 X+ [7 e
- new Vue({$ c) T8 x3 T- p$ l# F3 i
- el: '#app',7 V! ?8 h, z/ N! i- [. l9 s/ n! ^1 L
- data: {
% W, w+ w# ^, E- S8 @3 i8 p - ok: true,: B" M1 d) ^1 k# N' _
- message: 'RUNOOB',% B* n! G$ @4 j9 R* Y7 ?
- id : 14 Y$ b# A; [& N) ?# S! ?7 [( G
- }
5 B6 V$ I9 `/ i; R1 \! n) l5 {: D - })
" ^3 _/ x8 D4 D; c1 b3 x3 B - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">5 a1 G8 D& l& x, F/ _
- <p v-if="seen">现在你看到我了</p>. J# O! J% Z5 q/ W
- </div>
0 k. ~1 r& g; {) d, j -
; ?- Y8 f H8 A5 n7 ]# l - <script>
+ n2 N$ _% A9 K# n/ U - new Vue({5 H+ F, o0 u2 v# y( ]
- el: '#app',
! e: ~5 q# E: D3 d. E* O" }7 p - data: {5 f. y T* H/ ~" J$ `
- seen: true( O: c7 w* S. S; f: E' }3 V
- }
: W, D% k) R) i8 A h% ~; n# o$ W - })# d3 y% B+ ~# w9 q: }7 n- a, Y
- </script>
复制代码
/ c: s& J) D7 Y) A0 h u1 N9 Z. T0 p这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
' J) O' I Q+ G: a- P - <pre><a v-bind:href="url">菜鸟教程</a></pre>
a N- l. R& p: q6 T6 E+ N$ P: Z - </div>+ g$ m: V* B3 [$ T+ v' H
-
, g3 K# T# L$ X8 `7 I1 S5 Q - <script>
" `8 l- @# {1 l - new Vue({# u# j6 V1 v) n1 `* j
- el: '#app',
/ Y( O/ V. @; K( }; D. O - data: {" K% n3 O# W+ h1 i
- url: 'http://www.runoob.com'! M! }6 L S* _; O* @! W m( {
- }6 C# z( }+ v8 K- g; ^8 S% ?
- })( }% P" q! [& t+ A# E& J
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
* T6 ^8 a% ?$ e
- <div id="app">3 O) a# G1 Z- n) b( L
- <pre><a v-bind:href="url">Vue参数</a></pre>
9 M$ ?# ~0 S# M - 0 h' i: A/ T0 k L
- </div>
4 L8 u/ K, j8 n9 V4 Y0 j S" t, u) b - 4 c* B& l( @$ B$ X! @9 s
- <div id="app2">
6 T; n7 l& x3 _- S* @! i - <p v-for="val in arr">& z! x& z3 o' @3 d- @2 J
- {{val.a}}3 f" B* i. K- c8 r
- </p>
* h3 ~; K0 W. \9 v - <a v-on:click="tap">点我</a>+ B$ O0 w3 H8 l6 I7 R
- </div>
5 V) L& N6 V F4 y: v
6 i) ], g T& l: b/ A
$ V7 E6 |3 e9 o5 t- <script>8 A8 d3 o+ J+ }7 y3 K0 R
- new Vue({1 Y$ Z( a& {+ O+ l4 Y$ V
- el: '#app',
0 j6 z4 y( U! _# [( U( W% w' I3 C - data: {: U5 P5 x; I, P
- url: 'http://www.cncml.com'
6 ^- _* [8 Q: F - }" r6 s% y0 ?0 \ ~7 u* u6 H# `
- })6 M! u i7 r5 R4 w, }4 Y
- new Vue({- T6 U x* ^+ p( l
- el: '#app2',% V9 ?& x o# Y0 U. j5 e
- data: {
( I0 Z% l* F, q' e6 X - arr:[( G( k( w( S$ _% f C
- {a:'bb'},& b3 }: N3 A6 U$ i
- {a:'cc'}+ n6 i( T- u4 u5 z7 T7 u' d
- ]: i1 Z" R } \' H7 E9 l/ {% l# I7 o* ~
- },
! R- h5 [7 U( N" `, h - methods:{
3 k0 [1 I% i a8 \! m. H% y - tap : function(){
3 c7 K9 G; g* z4 p W1 Y9 f8 ~: ` - this.arr.unshift({a:'new'}), \, Z" o. J- z8 ]5 y
- }
+ n9 E9 s- F5 G" K- `9 Z - }
" U: y3 w* o7 }. l; N: s: K; Y - })8 _+ g$ Y, S8 y* k& e# l" u) O7 E! k
- </script>
复制代码 ( a# f4 t/ s X) E
7 P: W4 `8 T! C" G3 B; z& M' I
在这里参数是监听的事件名。 4 R& b) p [7 F
|