Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
0 {& R8 B/ Z1 Y) W - <p>{{ message }}</p>$ D" i- _6 y2 `1 e
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">% e/ h) C$ E5 @7 j
- <div v-html="message"></div>
8 m& T8 P: j+ X; t- z! g9 P - </div>
9 d, B% Q) U- C' x -
7 s8 N& I( _5 m9 e - <script>
2 @9 G1 H# O0 C1 V) { - new Vue({
7 e" t, O7 w# S - el: '#app',
' |" T" J3 m: D6 l - data: {, r6 w* R n0 ~ G- A* k& Z
- message: '<h1>菜鸟教程</h1>'( F3 W% p: x+ c4 j' m2 a9 z
- }
# b* q* ?3 ~; ` - })% h1 ]# o) _% J6 \# N
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
1 b& ]# X8 b' e& y - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
. f# H; r2 \8 L( e8 p/ n - <br><br>9 n8 Q6 F& J& f' l. I
- <div v-bind:class="{'class1': class1}">
& _" r% W; i7 ]9 E! T- L; B - directiva v-bind:class% V# _% D9 b7 Y* N |; d
- </div>( e% m! C7 V: \' N& ~6 x" f( r" E2 ^
- </div>
: T3 d6 m) C5 [: _5 d - 4 q5 U" f9 [' w
- <script>' V4 N) O: O7 s7 e6 R+ `7 ?8 h1 I
- new Vue({
( W9 y7 [: e! Y a& O: e - el: '#app',, Z0 ~# M1 U6 I D! K
- data:{! @1 o. T$ L; f. J2 D
- class1: false; q. S% t% n. F7 H% M+ L
- }
3 {( Z+ E i# g - });
) L& N [6 p; n, } - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">' I$ b0 L) V; w1 v" G/ M8 v* @4 T
- {{5+5}}<br>8 q! | f1 \- I: u) S: m
- {{ ok ? 'YES' : 'NO' }}<br>
9 \) E$ u$ L( p" z - {{ message.split('').reverse().join('') }}# }& K% {' ]6 ~& m
- <div v-bind:id="'list-' + id">菜鸟教程</div>
( z+ s* B3 C5 D2 p - </div># G S8 W8 G0 _' e- ~8 l
- $ m; g* b5 \9 M5 }
- <script>3 {( S% C9 ^1 [1 }3 ?
- new Vue({
( R( I, w2 ~- e2 F - el: '#app',; c1 v2 q4 Z- k+ |; B6 s
- data: {
0 Y6 W7 K, X) ?& T9 L - ok: true,
6 q6 R- Q# e, X9 f' H3 N - message: 'RUNOOB',0 P* n, @2 }3 { v' i8 V
- id : 1
, g( ^. |; @! v0 n, |, J - }
3 L8 U- J7 U3 V1 L; m5 Z7 T - })
! Y% o& ^ y. y1 _5 T' y f - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">9 p% }3 Y% S# W/ r# X& w
- <p v-if="seen">现在你看到我了</p>
# v7 U0 H* n* M1 l3 B - </div>% l" c/ v9 m' ?5 P. v2 I" A
-
, c/ a: j9 t/ m, p1 I. S - <script>* T5 \* `4 v i% q
- new Vue({% B3 Y2 c8 }3 t( I/ [3 W9 A
- el: '#app', X; ]& w& F U s
- data: {
! N5 l8 M* y! v& K( r. x/ I - seen: true! d8 P6 ^6 g6 w2 r: _' X+ @
- }- z& t% z- K4 J3 s
- })
z8 W6 }* k! t - </script>
复制代码 / B" U( U) r$ E9 G; i
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
5 o/ d p! U$ q: a4 f' v- o - <pre><a v-bind:href="url">菜鸟教程</a></pre>
* v5 J/ t3 j) p, \7 |6 d2 n - </div>
' {& J$ A0 A1 ^9 w' K -
7 ]+ h: W5 r, f7 q2 K - <script>
{% K# `0 w+ v3 z - new Vue({! s* s* Z! P( H$ H
- el: '#app',7 Z( y3 c8 i8 N
- data: {
* E3 [' d B# b0 {# W- T - url: 'http://www.runoob.com'2 U. M4 ^' F9 U9 I6 e- \% m
- }, r+ j' e9 y# f3 P0 V |2 Q$ V
- })
$ B- {% r' k0 A - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码: j$ r8 a2 u( |5 n
- <div id="app">' j* n7 p0 B) `5 y" N y) R
- <pre><a v-bind:href="url">Vue参数</a></pre>
4 \2 j. y4 y! W( `
G& _0 b/ {& c- </div>9 l P0 I5 f' i) j' s! w
9 Q9 [( j5 b' ~6 o9 L0 L' v! F- <div id="app2">9 N1 d+ L% P3 g4 p: i$ ^
- <p v-for="val in arr">
6 l( C. E) N S3 F/ _: b - {{val.a}}
. ]3 D: L" d% Q* h4 R& y - </p>
( C+ W( [* w" j5 _ P2 f - <a v-on:click="tap">点我</a># ~6 _2 \, P; c# \4 a
- </div>
$ @% ]$ H: H$ j3 M: H7 H5 D
- v# I& p: X/ c" x& l* {- + q: L* E. @- Z
- <script>
; O) L: ?/ l. X% D" t- `6 {) P - new Vue({" I2 u* p$ T/ O7 `# H' E- r0 R
- el: '#app',
% K5 i; _7 z# {/ w J: t _ - data: {
/ D9 H) ^' B4 i/ J5 B1 d! m4 Q - url: 'http://www.cncml.com'
. [" J5 d1 s y( m - }
3 y( x( j3 Y2 B1 P - })
2 z6 f G Z% y. H6 T$ f/ c - new Vue({
. b4 V5 P! U% Z; G; v* S - el: '#app2'," n' A% x% X+ y: ~! l
- data: {
/ o! S' |: l0 P) L% ~) t0 E - arr:[% ?" t$ v! C E: y: n& G Y& x: \
- {a:'bb'},
8 q+ Y E; D/ v& J - {a:'cc'}2 [' y8 O d- v
- ]
: x3 A- h0 p) u. p% _ - },
: |' l, n+ p6 A - methods:{. y) T+ Y+ q1 F+ E* a
- tap : function(){ [; h1 s9 R* |* X% l" Q' t
- this.arr.unshift({a:'new'})
- f1 D N5 J6 x/ H' y - }" u3 X/ P) H, T: `
- }. X/ m% \! k/ h* ~+ J; G: p
- })
. B/ H1 t8 [5 l3 h7 Q, h - </script>
复制代码
. F4 k# i& D2 z1 a. q- O d. \' F2 A; r' q
在这里参数是监听的事件名。
; u! Y! B5 o6 P: Y" P |