|
Vue.js 起步 每个 Vue 应用都需要通过实例化 Vue 来实现。 语法格式如下: - var vm = new Vue({4 X4 ^# P% s m; v0 J# h
- // 选项
# r6 t! `4 z4 J6 u- a( n% p! F7 `3 L - })
复制代码接下来让我们通过实例来看下 Vue 构造器中需要哪些内容: - <div id="vue_det">5 l. H' S2 |( I& _) _0 b+ P% \
- <h1>site : {{site}}</h1>. R& n3 H( w. H" Y
- <h1>url : {{url}}</h1>8 F$ q/ H5 y' P, {# |1 q+ U
- <h1>{{details()}}</h1>
' B2 K* D2 Y5 h7 x - </div>
% [: O4 P6 A# U+ c - <script type="text/javascript">
$ k- { H0 D q - var vm = new Vue({
3 A0 H0 V I! t; P& x9 I - el: '#vue_det',8 K1 W/ Y6 E3 p
- data: {
]0 Y% T D$ h: w) d - site: "菜鸟教程", j" S& @$ p$ _& n; E
- url: "www.runoob.com",
6 s( \( T& }6 k7 [" G- k - alexa: "10000"
% m$ R9 F6 _& E" {' o - },
& U' I7 F6 [6 k4 j8 Q - methods: {
; u/ I1 y* U0 G& t( k$ W3 c5 ~ - details: function() {
0 ?, w& z0 f! I - return this.site + " - 学的不仅是技术,更是梦想!";
1 {" m# F# W b& R) h7 m0 Y0 ? - }0 ~7 k) K. a4 z: M
- }6 d1 I! D s: e8 c( _
- })2 a5 c6 o8 x( q* a
- </script>
复制代码可以看到在 Vue 构造器中有一个el 参数,它是 DOM 元素中的 id。在上面实例中 id 为 vue_det,在 div 元素中: - <div id = "vue_det"></div>
复制代码这意味着我们接下来的改动全部在以上指定的 div 内,div 外部不受影响。 接下来我们看看如何定义数据对象。 data 用于定义属性,实例中有三个属性分别为:site、url、alexa。 methods 用于定义的函数,可以通过 return 来返回函数值。 {{ }} 用于输出对象属性和函数返回值。 - <div id="vue_det">
E2 B: i# M- p/ l+ T: b - <h1>site : {{site}}</h1>' I! W3 N9 o1 a
- <h1>url : {{url}}</h1>
4 b; @0 T4 }4 w c; Q - <h1>{{details()}}</h1>
% ]8 ^: ^! i1 u/ |8 ]2 W% {" z d, W, s - </div>
复制代码当一个 Vue 实例被创建时,它向 Vue 的响应式系统中加入了其 data 对象中能找到的所有的属性。当这些属性的值发生改变时,html 视图将也会产生相应的变化。 - <div id="vue_det">
w7 ~: y6 f3 T: ^* L - <h1>site : {{site}}</h1>. h0 j4 L. g! ]3 Q
- <h1>url : {{url}}</h1>/ o3 I% ]" o! }+ F" |7 h0 A: o
- <h1>Alexa : {{alexa}}</h1>
# K) @" R3 [2 Z5 E - </div>
5 m3 X) K8 i8 R5 _ - <script type="text/javascript">
! p Z \, P0 ~9 w. B - // 我们的数据对象" J, L7 D( y" V: t9 x
- var data = { site: "菜鸟教程", url: "www.runoob.com", alexa: 10000}' n' e' \( y! y# u& F3 X$ t0 Z
- var vm = new Vue({
7 c/ Z. F) P* ], R B E( D+ z% J. l - el: '#vue_det',
& [0 K; t$ A/ s* P4 n" r - data: data
. g5 S* l* l; \* q6 V/ u ] - })
0 G6 K& W; b. i. X( _ - // 它们引用相同的对象!- g% i4 K3 K# c3 P0 g
- document.write(vm.a === data.a) // true
5 e% b, h1 H& o# f3 N$ y* J& W - document.write("<br>") f, T! T2 Z" l* u$ K
- // 设置属性也会影响到原始数据
( s, ~9 j5 W: q - vm.site = "Runoob"
8 N! J0 a T! S2 q b: c - document.write(data.site + "<br>") // Runoob
. t; K" _& }* I! |8 |- N4 V - L; y( h% I# q- i1 `3 G; k
- // ……反之亦然
6 G0 ]! `( X* T' _% N% { - data.alexa = 1234
' {; D) D- w/ H/ N3 P& p - document.write(vm.alexa) // 1234
* y2 T+ S* D7 [# L1 u0 L - </script>
复制代码除了数据属性,Vue 实例还提供了一些有用的实例属性与方法。它们都有前缀 $,以便与用户定义的属性区分开来。例如: - <div id="vue_det">
% R0 s) B6 k' C% y3 M - <h1>site : {{site}}</h1>. i" T: F2 A3 q3 {( ? o
- <h1>url : {{url}}</h1> Y8 K4 S. y, v- h# h8 T
- <h1>Alexa : {{alexa}}</h1>" o/ i. C! i v8 l# f
- </div> P- o7 y7 @ H8 A0 v' { C
- <script type="text/javascript">
6 w" t* P0 j2 y# W- v1 a8 O+ n - // 我们的数据对象
3 d6 d1 T0 ]5 x# m2 `$ R - var data = { site: "菜鸟教程", url: "www.runoob.com", alexa: 10000}8 `2 [) D) q$ I; P! F1 F9 `1 f1 q: u
- var vm = new Vue({
* Q, g% t+ n& o+ P2 |$ z F! v$ j - el: '#vue_det',
+ K2 C; x- l7 a/ V% H% Y" _ - data: data" n7 K# x3 _- R7 E. d2 _. e) N
- }): c+ Z" M( w: L4 w& l# [; s& l# I
-
* X ~5 ^7 J' v( v - document.write(vm.$data === data) // true
) p( j* D" i7 C - document.write("<br>") // true
& w: Y6 c6 w# Y3 v' P7 O$ o: U( u2 p0 h - document.write(vm.$el === document.getElementById('vue_det')) // true, n5 h* j3 I% n% M
- </script>
复制代码 5 z) |0 Q$ h4 t0 k0 s! m7 R
4 U6 O* p8 j8 s% X l ?
|