|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">' j& u- o/ ~; y; N! i# N6 z) i- P
- <p>{{ message }}</p>: G! f/ R2 J" ]3 Y
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">6 T" N, [/ u# @ o) K- u; C, v
- <div v-html="message"></div>
3 Q- w( g6 T# |3 l, |9 q$ c - </div>8 A i" G6 p7 o. T: r" d ~) V4 k
-
4 v# n5 _4 |" H/ ^8 k% ? - <script>2 Y" n/ U0 [% F7 Z# b5 s! O5 ?
- new Vue({
* e1 F+ U) Q# t - el: '#app',& ?( J7 a& a! z; L
- data: {4 r& s! U3 ]/ K4 E W, J C
- message: '<h1>菜鸟教程</h1>'9 J& d4 [7 F, j2 S: {
- }
' F& @* {* @' g4 X5 H1 G - })9 _& T1 A# g9 @% F, \4 d
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">
, a! l; P) ~! H" A4 z5 ]) H - <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">1 @0 W" E) Y: [0 ~! y, S2 p
- <br><br>
6 Q1 E- b5 H( E1 V3 }+ n - <div v-bind:class="{'class1': class1}">
8 @& C% O4 p3 k4 R - directiva v-bind:class
) i' \ e* T. X6 B0 l$ E( g% n' ? - </div>3 o$ D. X1 R9 y5 m# b" y l q) d
- </div>
: \ U0 M) L/ P! l -
7 L8 k, Y# ^0 R( m' y) h% a - <script>5 U/ ~9 f% \' s u& ^# q
- new Vue({ V4 K4 X7 N" T* M
- el: '#app',: S4 P l6 `" e8 }: Z' d( K( w
- data:{
. _2 v, r, w3 A) m8 T5 _ - class1: false
' s, U; l! x8 P - }
0 b2 E* `+ q. e; X: V' [ - });
* J& {9 U+ C, |' l$ W( s - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">
, v7 C3 ^5 G( `0 e* e2 H" } - {{5+5}}<br>
; {0 E* ~% |4 T* j - {{ ok ? 'YES' : 'NO' }}<br>4 v7 k* Z( Q* P/ J& U
- {{ message.split('').reverse().join('') }}" ?0 {) ^3 a9 {9 i* G! ]: d) ]
- <div v-bind:id="'list-' + id">菜鸟教程</div>, C& l; s- D7 q( `6 D6 f
- </div>
! W+ M9 o9 v& `2 V0 R' x7 L) Y$ ~ -
& M9 j, G v9 `2 B8 ^3 h; [6 r7 p - <script>- t9 j7 e" I/ W( C+ |( ]
- new Vue({
/ J- x: w7 Y8 Q* h4 N - el: '#app',7 I& k/ u' n5 |2 j4 f
- data: {: `; I- m% C3 m u, ]
- ok: true,0 l" ^& @! H+ y6 F4 i' Y6 o$ s) P
- message: 'RUNOOB',- e$ k1 E$ t! ^* F
- id : 1
@" n% B! m; m3 d1 i - }8 k. K" D( f* Z
- })3 K& R8 b, v- q+ b
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">- H& o$ u4 Y. {3 H3 F7 g3 {/ H
- <p v-if="seen">现在你看到我了</p>
# U$ `4 h! v/ X7 H A% S+ \! z - </div>, E T6 ? c+ _! a0 l1 q4 `
-
* g4 F# l2 F( V/ J) _3 o - <script>/ c7 R& |1 j% Q8 t+ p+ s+ J
- new Vue({7 c5 g% t t$ ]6 U, j: Z/ m- O
- el: '#app',
/ i$ B- Z7 \ I \/ k& k5 i' G+ X - data: {! q. i9 H+ n, O
- seen: true9 D8 ?9 f. G) T; a+ A6 U k
- }( A6 }- ^8 {+ g1 f7 C( R$ H, v
- })
8 H$ E* e7 j; v$ C/ W5 Y - </script>
复制代码
' g; ^8 {; r* H+ |' X) K- x这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
( e$ J) H; Q. t! ?0 D - <pre><a v-bind:href="url">菜鸟教程</a></pre>3 r# E, k+ b* X4 n
- </div>7 }1 m/ {! `3 t, D t, L9 [
-
# q* w# |$ Q( J$ \: J. B9 t" d4 a - <script>
" E; X" t8 }6 V# p - new Vue({" X: T1 W& [7 R/ j- V& p
- el: '#app',9 E, ^/ L- L. z8 {
- data: {
8 _* s5 z/ I) \9 F7 E - url: 'http://www.runoob.com'
0 |: @* [) g8 V2 m6 m - }* b+ a9 v, u( a. V8 f
- })
! x- F* {( U; i2 p1 ~ Q - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码8 Z! a- s/ S, X7 x' A& ]
- <div id="app"># }3 B% o4 D7 D9 I4 z
- <pre><a v-bind:href="url">Vue参数</a></pre>3 P" f5 F) ?' r
* F) D& W/ ^5 k* g- X7 H7 V% y- </div>
7 l1 p. b1 T# Y" ] T; y0 Y
7 V) q; P, G9 h+ \- <div id="app2">! d2 E' m& ?+ k( B- I
- <p v-for="val in arr">0 }% }; K) \5 @2 d! G E8 Z
- {{val.a}}
/ I3 h3 t( U% ?2 G" \: O- c - </p>0 t- n* b- c6 o
- <a v-on:click="tap">点我</a>- u( g" H3 f) i) b r1 I) m
- </div>7 i% U2 j1 R) Z9 ~* D3 u
- 8 [- l1 ^5 `) M" ~* K
5 W+ s# v( X) y0 R* F0 G+ q- <script>! G) }. D/ N1 t/ f, d0 d: y
- new Vue({
% X- c4 Y" \0 e - el: '#app'," K' W" M( ?# I& \$ A& G
- data: {8 |) f: m6 q3 P5 F6 h9 L8 W! c
- url: 'http://www.cncml.com'( F. `; |( j7 {1 }9 L, [' P
- }6 B/ ]) b$ O! o
- })4 D. |" W5 S$ f5 {0 @
- new Vue({
4 |. F" R% y9 V6 N O. S1 ` - el: '#app2',2 i7 {- L! S3 q4 Y7 H! t
- data: {
2 s, C/ _) h8 I9 P - arr:[
{( T" G3 v* m4 i5 \ - {a:'bb'},, w/ h6 D: o9 D! M; o$ m# t5 W
- {a:'cc'}$ o( W' b! v; f' O4 p7 h
- ]- O, m( J" J/ }( Q5 ]' ~# R& j3 R
- },
1 \. y. K# s( b - methods:{' v$ A3 |% v5 j% R6 t
- tap : function(){
& W2 B/ ~5 N/ H - this.arr.unshift({a:'new'}) p6 f7 c- Q+ t* b- K
- }$ Q& w, ~% t" b- U% C) z0 o
- }
, R0 D) ~% ~) v& Q1 K - })2 K; y0 I+ g: g" X, V; X& U
- </script>
复制代码
4 J! K% h% {# }. `" V$ Z
7 }# _. s* b4 F
在这里参数是监听的事件名。
% i( T) S* x4 r |