|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
0 p$ W, d$ S$ d - <p>{{ message }}</p>
* t/ k; B f6 m0 F+ s - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">5 k( k; x( h, N& H! W1 [5 T% M4 Q
- <div v-html="message"></div>/ L* u+ P ?. L4 X1 h$ n' t7 v
- </div>5 h8 i3 e6 h7 a. a2 u
- # y; F0 p5 C& g3 V+ H2 l, Z
- <script>
! l) [' i3 B7 y6 \' w* h) K - new Vue({
& m2 m2 h7 `( S8 c - el: '#app',
& [* a" k" `# T5 A% j: m6 q1 a - data: {7 |6 ]3 W' l6 B& W
- message: '<h1>菜鸟教程</h1>'- Y+ E/ l: V/ s, {9 ]4 k+ P
- }1 d2 p0 a" K7 D4 m1 r
- })
7 t9 J- j& ?( P' @* i - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
6 E+ F# x& n7 C% ^0 G - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">) e+ }, j" U6 l2 C
- <br><br>
3 y; s* E8 M R$ O# @6 u: y - <div v-bind:class="{'class1': class1}">- ?; g& ?% G' c4 u0 e/ e; V* e
- directiva v-bind:class
% j/ o% D8 R% N - </div>2 ?! c! [6 q% \, @: i, b- n
- </div>
7 f/ N# ]4 Z% j0 t8 j/ j9 o) t/ C - ( B* Z/ A6 [- |+ y$ [
- <script>
8 p9 } E$ [1 f3 P - new Vue({% o" Q. ?' H1 R M( m7 K3 E
- el: '#app',
7 }: Z7 z; [* Y3 ]" {: @9 n) r L$ o - data:{
i3 }# c: l$ b7 X8 t0 Q; o - class1: false; H5 N3 q) M1 Y* i2 ~( i6 l
- }
& H( x+ d. G0 P" [6 `8 B! r - });& I& e6 A8 X. U0 n2 O) c' g7 M
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
2 L, c# j' I% ?. L# m - {{5+5}}<br>
# S6 p" {( D6 N- i3 M - {{ ok ? 'YES' : 'NO' }}<br>: H( v8 G* d+ Z U1 O6 b
- {{ message.split('').reverse().join('') }}
- }' u( \, A' z1 S, h. X - <div v-bind:id="'list-' + id">菜鸟教程</div>
/ n4 L' n, u' d9 A# b - </div>" t+ ]5 B$ w/ `* b7 M
-
" q+ _+ e+ _. j O4 s; p" ^6 Y& g* m0 r* ]3 ` - <script>: D0 o, T( v. u j% S r
- new Vue({
4 c$ z6 t4 Q b" w7 h6 Z2 A - el: '#app',
. \: a: W$ m! t6 u, t - data: {6 `& n9 x/ M7 J! k
- ok: true,+ z8 G) G6 p: D1 d
- message: 'RUNOOB',
: c: |% _8 K; c a7 \ - id : 1, I- H* }" B4 s
- }
2 C3 |( U- e6 b. T6 y4 | - })3 m) ` ]1 t4 C# `
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">9 s. F7 G5 o8 v U# g9 _6 j
- <p v-if="seen">现在你看到我了</p>0 x8 A5 i. r2 e1 B( j- S
- </div>! D7 J0 y3 m3 h
- 1 f( S$ N9 x% M6 E- h8 s$ k
- <script>
3 n2 n" t4 b f* I - new Vue({
4 U8 S' x4 b$ j0 l - el: '#app',7 E) a' O2 O8 e" F7 J0 K2 o
- data: {
' A8 R0 B. _: H% E8 ~% U& y3 K - seen: true
( p. A- z" q4 w& `: z - }
) o# }3 I+ }/ Z5 A& B - })& Y2 a6 W1 v) C8 _; o
- </script>
复制代码 3 S; d! Q" F6 Q) N1 L+ \7 I2 k$ C
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
/ v( k0 F2 v+ `) d7 t5 e - <pre><a v-bind:href="url">菜鸟教程</a></pre>
; c! [' ~" _' } } - </div>
0 l4 ]% x* u7 { - ! Z" R8 O& Z6 m4 [. O* R1 k
- <script>
6 z3 ^5 d' g0 H+ l5 W - new Vue({5 F7 r% z! @ [
- el: '#app',
* x8 B3 I+ t, U. h$ e - data: {) ~2 O+ h" t/ l/ `( P# e
- url: 'http://www.runoob.com'
+ m2 r) y, }4 w% @# d, Y - }4 S5 ~; t. q" i2 S* Q
- })
! d* i* U% F+ G - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
" E2 f) E. q3 e2 t+ X0 x
- <div id="app">
4 I+ Z! o) |) `* D3 h( ?6 D - <pre><a v-bind:href="url">Vue参数</a></pre>
' Y3 X/ v% G$ D- ]3 z/ S
$ e ?9 t$ K" x. h( Q- </div>9 ` T( v3 j" Z/ Z
- - `* B7 B. }) w* l Z+ S& h
- <div id="app2">: B& p% v6 a5 X2 F' ]
- <p v-for="val in arr">
' {7 K$ T; N' n/ k) u - {{val.a}}
0 j; ~3 X, k u' b. B - </p>
$ h0 Y$ v: ?5 t& z* A- {. \ - <a v-on:click="tap">点我</a>8 S7 H( e( c+ C' S& d
- </div>
! P! Q% k2 D- w% i2 k - & K9 l9 m! _5 z. a* A* w
1 A; O# h( ^, v& L' K f. B- `' f- <script>& Q0 g( t. `6 |( L9 S" Y+ c/ d/ }
- new Vue({; F: B4 c* H9 ]6 A e( ~0 C
- el: '#app',
( Q7 h4 n# b% Q2 d - data: {
0 H. G8 I0 h( j5 D( M% f - url: 'http://www.cncml.com'* q* z! E7 C, N$ t. A% Z, P
- }% x8 C' M: e7 S T4 s3 \* B
- })0 ^' E" w6 r& ?4 {% r0 A
- new Vue({, o( w+ ~ I; M8 z" b7 a
- el: '#app2',: X8 O! C+ F% } a' T5 ^
- data: {% Y" r, k& A0 b1 c
- arr:[
3 g9 L( t8 s$ A4 Z: O3 A3 J1 G - {a:'bb'},
# }- m5 u" Z# n- A6 W" O { - {a:'cc'}
R0 x( S; \4 `" ?0 ~ - ]- j+ A; F. @) `7 \8 }
- },
( n( f9 P; l! H% O - methods:{
0 l% S; D. U. g0 s: c% A - tap : function(){) G: q0 r0 x/ |7 u. P6 ~
- this.arr.unshift({a:'new'})! }0 ]% D9 g# s- h: F% n
- }
8 B7 E B- H) ^! U - }
, J \! m3 ^' v [" s - })
+ g4 G, f& f* B' Q- v" ?' [ - </script>
复制代码 : a& |0 k) ?) W& K
$ O0 e% d# f$ p# l! {+ F: o! z0 s
在这里参数是监听的事件名。 ?, o% X3 C+ B W
|