|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">& Q$ t7 o- E4 X& C" U) k1 j/ b
- <p>{{ message }}</p>1 R, ^, k* I+ b; e, f
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">
9 I8 v8 G" u8 M' h - <div v-html="message"></div>
* H" G0 ^7 q$ K- q5 \ - </div>- x5 W. g# m4 N/ f* F# z# m
- 7 q [& _* C# ~3 {% c
- <script>' X- l. X4 y2 e8 x- G& f2 Z7 Y- h
- new Vue({ Q& z0 y& n& ^% t- K
- el: '#app',
6 m s) X: i/ e- t' p - data: {
' ~1 N7 ^3 e7 z) L0 e0 y6 I - message: '<h1>菜鸟教程</h1>'
Z s/ `7 {. v7 B - }/ f0 `$ B, O& Z! R7 s% c
- })
3 y/ s9 K# W7 P+ S - </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app"># K$ K6 [* b. M0 y* |# o
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">% ?' Z: L# U8 B
- <br><br>! R* ]4 z: \ z. ?
- <div v-bind:class="{'class1': class1}">
/ c& T s2 D/ L- M) p( Q9 U- o" P - directiva v-bind:class
8 ^, y+ Z; O, D - </div>" t9 y% ~/ k" [: A0 X" B
- </div>
# a* A4 ?: ?: G7 W# }) m -
7 ?: I; M8 ^2 Z - <script>% a! d0 S* a, a, `5 F" e
- new Vue({
0 P1 _" P& G: P$ D& ^ - el: '#app',5 j; h6 n) B" a. u1 s6 K- R/ t, O
- data:{! b4 P8 l$ _% t9 j8 Y# ~9 o/ C
- class1: false
2 E$ m' S9 A P4 Q - }
' j1 M' A0 |/ T' N7 [' c - });7 Q' u8 Z6 x7 R$ G4 N7 J6 q9 F0 J
- </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">. }) s0 @1 l3 ]: L' A2 |
- {{5+5}}<br>* d# F$ x% A% \3 d& f
- {{ ok ? 'YES' : 'NO' }}<br>4 ~3 N3 k5 I3 z* M! y
- {{ message.split('').reverse().join('') }}5 x9 {6 r- X( {- R, z
- <div v-bind:id="'list-' + id">菜鸟教程</div>
s2 ]5 t; E4 u: n( K - </div>
7 H9 P; V; [# {7 g; H0 z$ Q8 d9 } - ! {# O! \, ^, z7 Y
- <script>
3 S2 z+ q8 [! `4 N$ K0 j - new Vue({
& L6 E: N$ ~) F9 g9 O - el: '#app',3 _ C8 S( {& k8 n% O" i( V' j
- data: {' j$ }3 Z& c5 w# P" g; R0 z8 l
- ok: true,
! |: p/ \6 ]( s8 _/ N, R! Z - message: 'RUNOOB'," Z- i9 o$ ]* P( s9 Q( x
- id : 1
& p& R+ {- s4 E8 K7 G - }
! _2 W- N: y; E/ ~% W$ { - })
7 @3 U5 Y* j2 U$ e% q - </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">
/ v- _5 H2 P0 ^9 c! i3 k% x' a" R$ { - <p v-if="seen">现在你看到我了</p>; P/ i% J% t% v' D
- </div>5 o/ J6 ]- e- `% K( Y. E
-
- e# m# w- b9 O2 q - <script>/ A; ^$ z; C# X5 v0 s* [3 L* j# Q
- new Vue({5 ~$ V" G" M( P$ _7 n0 A# t
- el: '#app',
) ^( z E6 Y$ u3 K - data: {
: N/ t- z% X& E6 q. N - seen: true
9 {7 W( [3 ~9 B( N" X2 W* k - }5 F4 u" Z: _2 r* e0 K4 V u, o
- })/ D4 p' \1 E( _$ F& X4 l
- </script>
复制代码 ! G& Z1 F2 j u0 U( H
这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">
7 A# ?, g/ Q6 N& |# b# l - <pre><a v-bind:href="url">菜鸟教程</a></pre>
& }& d. N' `* F - </div>, V' G2 F: W4 ]
-
t. \4 E2 [' i$ o - <script>
. P. z* `& P8 f {6 v - new Vue({
5 Q" ^) C, |( v, Q# A7 W- S - el: '#app',5 O9 A( P9 `( a& f* K
- data: {
( l K3 l7 z. V+ j" f6 e: Y0 U - url: 'http://www.runoob.com'1 z4 P0 F. k4 V% A) S
- }1 X( M8 v9 q4 l/ H7 h% p
- })
3 @* V# O" ]5 o" } l7 h+ \ - </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码- X( O4 z# `8 n- P0 ^
- <div id="app">" [3 [* ?* S" b+ E, Z+ U. q
- <pre><a v-bind:href="url">Vue参数</a></pre>4 y2 q; J4 p/ ?
( P& h7 i6 Q1 c$ ` B' R% `- </div>
# H' Y9 j/ H$ G$ z0 N! v1 _9 j - - l% n, [# k& H4 p& `: S5 A
- <div id="app2">4 m: b# K0 S) T8 r- k; \2 H5 x
- <p v-for="val in arr">
% C$ E1 l% T8 p" j - {{val.a}}" Y% M* d! I$ H9 b
- </p>
; r! q1 a* Z0 c( p6 n N - <a v-on:click="tap">点我</a>
0 J7 e3 v- P1 B( W* r; W5 d - </div>4 _0 d/ Q! \8 y4 M3 t# R# B
( H: W; O/ d/ q+ s9 I
g4 |! ^6 Y6 F! L+ c- z9 I- <script>7 @7 U$ K" K4 A# P' u
- new Vue({& e; a" E2 _8 b5 f& g
- el: '#app',
% M b, ]7 a" G+ [7 r - data: {" i3 g* {& N# f9 R+ S: T
- url: 'http://www.cncml.com'
v% h( F% n( P+ _8 f$ p - }0 y$ k, l( `/ x
- })
; |. P4 }* V, I4 i/ P, U - new Vue({
, V$ S: k# J$ X8 c4 d+ U - el: '#app2',
6 {+ `1 F0 }4 d' z2 S6 v - data: {
8 L+ a% S/ o/ d m9 O$ v6 S, A - arr:[% L9 w/ _" |, w6 ]6 F
- {a:'bb'},
, G" a/ g: r# [6 O$ f - {a:'cc'}
- u/ v( b+ Q; H* _1 e( e5 |" f - ]- N% S3 u4 x. @4 B
- },
7 P. w6 ?. A- q$ @: T2 Y) \5 m - methods:{9 c3 S/ B0 ~0 q( x2 Q. ~; w
- tap : function(){
4 f. c+ }2 ?0 a6 w+ n3 k% W - this.arr.unshift({a:'new'})
6 V3 E/ N/ n7 k' P5 I - }5 D7 B6 x& k) ~ R
- }
& S# d+ X/ U0 O4 `1 f+ B - })
2 U: N+ ]3 N- l2 ^ - </script>
复制代码 # U+ N6 d/ Z2 l
7 o [ B+ O% ~' i n
在这里参数是监听的事件名。
- l( l) n; I/ v" y3 d% m$ w& A |