|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">$ T2 ~2 Y4 p) y& M; r
- <p>{{ message }}</p>
: y7 Y+ }, s; H9 w0 | U3 k! Z! { - </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">0 X& ?% \/ c6 R/ \/ n8 n* R
- <div v-html="message"></div>4 O7 {2 \( L" ~& q$ ~: e! |, J' d0 Y
- </div>( b2 j1 U. q( J8 Y: Q) h+ d& Y
- I; A8 z; u4 Y, N
- <script>, i9 ?, t, d9 j) ]1 P( l- Z% O' Z0 M
- new Vue({
& a# x- @0 s6 Y- x& @4 x6 | - el: '#app',; Z- h0 X O0 o, Z+ o8 o# K
- data: {
- U. j+ `5 v* |* y - message: '<h1>菜鸟教程</h1>'
- m0 h7 m3 j# D- Y+ a- ^& n2 s% u - }# l+ e. p; p$ e! {( Z& Q
- })0 R8 m; c( {- A( t- H
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">' k4 R) Q6 l7 T7 C" {! `& Q
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
$ E' `- z0 \0 j! m/ [ - <br><br>
* ]: x: K! O3 a2 f4 t% F9 y - <div v-bind:class="{'class1': class1}">( Z/ s( F' ` N& c! t* j0 N
- directiva v-bind:class
* t) \7 ?2 u5 A" V( U& f+ z - </div>
, { Y; |' W2 t% p - </div>
/ v/ l. l5 ]: b# P& c4 `) k - 5 |" h0 u# W V( R! ~
- <script>
+ o# @1 [* u' S8 R+ Q, h, I - new Vue({
/ N: @* f9 L7 w8 O. n$ Y/ V% G - el: '#app',
' h7 @* O1 F4 {, d3 p. G6 K - data:{5 l( ~, a3 t, k( W0 F
- class1: false
7 `% `7 C; J; O* K& A8 L$ p' U - }' m$ |3 Y9 T0 o; {! c
- });
" V4 D3 @# s* g) R - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">% E7 B; O6 a& @; A1 s8 ^
- {{5+5}}<br>( {3 P# Q! V2 r4 u! D
- {{ ok ? 'YES' : 'NO' }}<br>1 _; Q8 O0 @5 I7 w
- {{ message.split('').reverse().join('') }}
, k% C3 U: M! x$ I- l - <div v-bind:id="'list-' + id">菜鸟教程</div>
4 J; O" p3 B$ L+ i" v' }* C - </div>
6 t3 D( ` ~0 b3 {1 ~ -
! Q9 T4 g9 E2 Z+ A8 J - <script>
# t9 D( g: p8 B! j" d9 n ] - new Vue({
8 J! H5 E; ]; g! e% [; M* k, `) R - el: '#app',
& ^- z; e8 t4 Y" k7 e0 T, v - data: {
, Y% Q. Q' L, L/ Q - ok: true,
% U3 O, R+ a+ ^3 m3 |2 Y - message: 'RUNOOB',
- i) }' u! V$ @6 F/ ^ u - id : 1
& p% W) }/ ?/ r. \ - }, |. S' X% o0 b# q+ k6 F
- })* {% K! i' ]' F+ D/ @9 B
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
5 e. E3 @# X1 @& y - <p v-if="seen">现在你看到我了</p>8 d) s l$ v2 l# P4 s8 w
- </div>, b8 K$ r8 |6 a3 u) Y
-
8 b: U2 m) v! P$ }$ Z" \% } - <script>; L. i5 T- d9 j
- new Vue({+ u( h1 K; l* \& ?6 _( P
- el: '#app',' C1 {/ W; R, c, a2 U
- data: {# v. G6 D3 P l8 Q' R' v
- seen: true
, h0 i! O/ i- C+ P - }
]* `& w3 q1 [( ?2 L" w - })$ _: u, t4 L2 {. w% s ^' P! R1 W; Z
- </script>
复制代码
, z4 O1 v# J4 X这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
: R" d7 ]9 e! H - <pre><a v-bind:href="url">菜鸟教程</a></pre>4 S$ n" q* D% f, _# J ]
- </div>
( r7 Z) f! J7 \% L; r0 ?$ A G - . s4 U/ F! V# B: l y% a
- <script>7 ?+ q Z% Y6 ]. ?8 ]
- new Vue({* ?, p& L8 R. a k' O8 I! J
- el: '#app',
( a7 e1 l9 `- ]( ]) K - data: {
; j8 R+ d4 W: g! T8 q - url: 'http://www.runoob.com'
5 S6 W7 a: t3 u+ p9 f8 r - }
- g# Z3 O W- @* s - })) R% j, o) V, K( ^
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码
8 h" l7 P& ~1 o+ G- U+ }1 q# w
- <div id="app">5 W5 i+ Z% b, J
- <pre><a v-bind:href="url">Vue参数</a></pre>* ?2 i* W% g; {, V5 T9 E
4 d: K* w8 J1 c- P8 F4 ?4 V( P- </div>
6 X, o! t# ?( X5 I4 W - " C; d1 U1 Q, ]5 W
- <div id="app2">8 h; L2 L% N4 d+ Z9 a! c1 w! \' ~
- <p v-for="val in arr">0 R( n: l% h- i
- {{val.a}}
: G( G4 `6 w2 [# m" s# k( K# }7 Q - </p>$ P- |) _5 x, I/ G- I0 M K
- <a v-on:click="tap">点我</a>3 ~3 E) v8 g9 R1 ~5 f( m# P. X: a
- </div>
% g+ X0 Z* X; E# Z0 o$ u' C
* c! T. h4 y3 D- ) [/ T+ Y! ]' k4 q
- <script>5 T5 a; f* u- b5 d, v" \
- new Vue({
. P7 I" g# W- Q' @) W! O/ x - el: '#app',
* G; R& C4 F+ e; D) I e - data: {
0 O, f6 D% g4 ^; t+ K m - url: 'http://www.cncml.com'
+ s" v: ?+ h9 T0 ` - }
0 L4 J' M0 ^" O1 Z - })& e6 }( ]3 h9 n1 J
- new Vue({' G6 ?+ B; Y1 k" m g' \ B2 K
- el: '#app2',
* i" y: h& } }) \5 V z: Q: W - data: {
$ g. @# h8 z u6 \/ M - arr:[
+ Q0 K6 m9 @: W! d/ p - {a:'bb'},+ k- j' f" o6 S* N* N3 B# U6 j
- {a:'cc'}2 V. V7 B# V+ Q& w9 | Z, b
- ]
& c; P1 I( k8 s - },- F5 Q6 `; B, B5 H3 W+ a; [8 X' P. f0 t
- methods:{& P* K9 f; C, h" Y4 b8 g5 L2 C
- tap : function(){! F4 [6 T9 t0 l7 `: A$ n" }
- this.arr.unshift({a:'new'})
3 c" a" \, | D9 P: [/ L2 o - }
5 @7 x C W5 `% Y# r& @! g - }
+ |1 p7 e1 t: |/ k L - })
) |0 L: T# O! A" ^& i - </script>
复制代码
, I1 u7 s' V# A
5 B2 f8 a+ [- q, R
在这里参数是监听的事件名。 . L+ _% t+ W% e) L- {3 F0 Y9 A
|