|
Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。 插值文本数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值: - <div id="app">
) O% l/ @# ~. E$ v0 f7 s6 S - <p>{{ message }}</p>. |8 S# ]1 p* ?1 ~# I! p
- </div>
复制代码 Html使用 v-html 指令用于输出 html 代码: - <div id="app">; a; N+ D% U6 k; X- n: Y
- <div v-html="message"></div>
: w" F( Z& z A% D2 _6 C! p' ?$ y; Z. g - </div>
0 o, Z- @+ Q" S" q# b& g* S# s$ c2 } - / v% o) }' k- @0 ]
- <script>
* Y# Q0 @0 L: P7 {& U - new Vue({. d! [0 D, ]9 g. c6 b
- el: '#app',
$ _/ a/ ]. o& g" p7 Z# h - data: {
+ I; f, m0 c( U# d - message: '<h1>菜鸟教程</h1>'6 S' D( d! p k- o
- }
4 R! Z" ~2 `( G8 ]. z- c, V7 f$ E1 r) q - })2 m' r& H5 k( H/ g# [6 V# v3 k
- </script>
复制代码 属性HTML 属性中的值应使用 v-bind 指令。 以下实例判断 class1 的值,如果为 true 使用 class1 类的样式,否则不使用该类: - <div id="app">! N6 l) V* r# {- |) E* L2 h
- <label for="r1">修改颜色</label><input type="checkbox" v-model="class1" id="r1">
. |( E* S. ?6 a. m0 k( E9 h - <br><br>6 E8 t! w; h6 }5 a7 `8 c
- <div v-bind:class="{'class1': class1}">3 O3 Y( G" `, L7 V: [) ^ }
- directiva v-bind:class% a* n% q, g. O I8 L' u. @ D
- </div>
8 c1 w; m+ T- b6 Y/ a - </div>/ g0 u2 q$ @# s$ i
- ( A* I7 {6 X) B3 H5 z9 E$ |
- <script>+ I- c, N6 u* M" B8 |7 N# L
- new Vue({% }* V; y. Z. J7 P; C1 \) R1 B& `
- el: '#app',! K5 x- P8 k& K5 [
- data:{8 J4 t& w: ~0 F9 _
- class1: false
/ g/ o2 o% H# Q5 [7 Q" K - }5 N. D! H h7 f9 |4 l" ^6 t* E
- });
d% O3 I0 v6 o/ W# K! @: d& s - </script>
复制代码 表达式Vue.js 都提供了完全的 JavaScript 表达式支持。 - <div id="app">3 M' R/ x. n. _/ h
- {{5+5}}<br>
9 t# g$ e% H" S; r5 F$ P - {{ ok ? 'YES' : 'NO' }}<br># e' D0 Z8 e/ F( g4 l0 T
- {{ message.split('').reverse().join('') }}3 x8 O" x+ n( H( Q& z" j' z
- <div v-bind:id="'list-' + id">菜鸟教程</div>
! S3 k$ I+ j1 u* u6 K - </div>4 b/ v/ f) ?# `
-
6 U9 e& `3 h5 T# O, h9 L- d - <script>
% _8 }7 D, ~, k n - new Vue({
# T9 S% M d! I* Y; |6 Y - el: '#app',
( w. C: q8 l& }4 c' o) h - data: {
8 J+ H; B2 y7 R+ V' q$ q - ok: true,
/ }. U0 Y8 d% B3 h - message: 'RUNOOB',
. r9 E5 z. O7 @4 p- O - id : 1" ^! G$ `* l- J" C$ A& a- f: ^
- }1 R+ q, ?& ^. W7 A& j7 [
- })" G2 S% Q1 I& i* H; ~
- </script>
复制代码 指令指令是带有 v- 前缀的特殊属性。 指令用于在表达式的值改变时,将某些行为应用到 DOM 上。如下例子: - <div id="app">/ Q: {# H7 h: [, N* ^* ~3 Y+ H
- <p v-if="seen">现在你看到我了</p>
% \/ Z' O0 |8 X - </div>3 f& Y& K% W% G4 _
-
# R/ B7 i: \1 [6 Z0 W4 M1 U5 F - <script>" M5 t( P" X- D" k4 `- \
- new Vue({
& m9 G8 D' s% U& K- n8 G - el: '#app',4 }( w* F [! W$ _+ n
- data: {; X1 Y. b$ F) S" f
- seen: true
& J8 A1 v5 _3 Z6 c! ?1 K! D( @ - }
+ T, C4 `5 U. ^" f# u - })
8 k: y L% S2 ]0 @- K" C! E - </script>
复制代码
4 o' C. W$ L# X: h i这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。 参数参数在指令后以冒号指明。例如, v-bind 指令被用来响应地更新 HTML 属性: - <div id="app">2 P/ I/ W+ v k
- <pre><a v-bind:href="url">菜鸟教程</a></pre>
6 @7 S8 g( H* L+ w; k# Q) P# j/ s' @4 | - </div>
" n- t" o# ^/ h7 P% I# Y1 G -
+ ^- h5 h) k) ~0 h% Z+ c - <script>0 R6 L; J( M v- \ ~
- new Vue({# c3 c/ `9 D1 @$ t8 D
- el: '#app',6 t- S- f- @* m/ Q0 F4 j
- data: {
g5 I) k F9 V - url: 'http://www.runoob.com'
. r5 C: g* U6 } ~2 X6 g - }
; x! J& T, X* L0 } - })1 s0 O8 K* T9 J# n Q
- </script>
复制代码在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。 另一个例子是 v-on 指令,它用于监听 DOM 事件: - <a v-on:click="doSomething">
复制代码 L4 V5 |2 J2 p
- <div id="app">. W) m, ~! E) O1 w3 F- E1 Z
- <pre><a v-bind:href="url">Vue参数</a></pre>: j3 Q n1 k5 n6 A& J4 J
- 7 ~, h- X9 @3 n' I4 s+ t
- </div>2 }5 N7 W+ Z* D# M" C
- 0 u# U% n6 {6 D
- <div id="app2">
_4 }8 b* C; Q: l- K4 ^" S - <p v-for="val in arr">( u$ R5 f L0 ]. B: s1 Y ]
- {{val.a}}
/ ^# ^3 e$ S8 y: p! N6 u7 X - </p>
, I' F/ e( m) z6 \ - <a v-on:click="tap">点我</a>$ `0 U" r. a/ E3 ?; x; ?3 Z6 m
- </div>
. l6 m; V* I- r: F( G; Q - : v' ^8 V& W0 _8 T" _; J1 c3 }
( Y/ F, g3 D- k! E- <script>9 Z' f: r; p+ P. Y" z
- new Vue({; Y1 E+ Y. N) @. K
- el: '#app',+ \1 Y7 z* e6 o& O. J% k. j
- data: {+ _- M% l8 U, j- R: R4 z
- url: 'http://www.cncml.com'8 |7 G: ^5 O$ i |; d
- }
6 H! L* `7 A& p6 _& U& A - })
( U% B# g# S" O4 n* G2 H3 |6 _ - new Vue({$ \, {2 [3 ^8 O4 B% \5 o
- el: '#app2',8 v) | b) j" ?& j, X+ X
- data: {" ?; @* k3 f9 I3 w0 N
- arr:[
, D- }( J1 b4 `% x0 h - {a:'bb'},2 s2 q! R5 N* N% D- N& I& \& f: n
- {a:'cc'}$ x, W2 H- ]# G! y. d% ~$ ~, R
- ]3 E7 S/ q8 r# K2 @/ _& X" {+ V
- },$ H9 s% T0 V8 l# P7 _& r
- methods:{" |( y% o( P( e8 d) I! V
- tap : function(){
% ~9 s5 {/ n" \ - this.arr.unshift({a:'new'})
( Y5 L# I0 ~* u8 T! y* {3 P - }
4 e% y' _; r8 w8 p7 _ - }
. @, Y- A# P0 ?8 g - })' ^7 | z5 ?# D( O' q7 k' \, }7 P
- </script>
复制代码 1 N; O$ d* O8 P
% S) A: N8 B6 T Z: k$ j3 }3 M
在这里参数是监听的事件名。
1 Q3 P4 |$ S: L3 e |