|
Vue.js 起步 每个 Vue 应用都需要通过实例化 Vue 来实现。 语法格式如下: - var vm = new Vue({
5 Q9 d4 V: O( Z$ ?2 [ - // 选项) u5 n v+ t! R" Z. r& a
- })
复制代码接下来让我们通过实例来看下 Vue 构造器中需要哪些内容: - <div id="vue_det">* Q6 \2 {6 m7 y' [* T
- <h1>site : {{site}}</h1>; c/ p3 d. Y3 D9 F/ K4 o
- <h1>url : {{url}}</h1>
+ }2 y8 W0 B( }% L7 T% F+ e# S3 c - <h1>{{details()}}</h1>3 c, b2 m9 {5 z
- </div>4 p2 G; u0 ?' g. q
- <script type="text/javascript">
0 ^; O+ _% ^( ^# j - var vm = new Vue({7 |+ ?; H2 `% `- s6 g; s" g2 |
- el: '#vue_det',' l v3 p% ?7 k9 C
- data: {
3 Y; ]2 X; S7 W1 B. f - site: "菜鸟教程",
# Y6 T4 r+ m! h& L. ?) J5 q - url: "www.runoob.com",
! B! ?2 F J' Z+ ]% E' N - alexa: "10000": b; Z1 V6 H+ s W
- },2 `. ]" ]! A+ o( o' q# T
- methods: {( }5 V$ R2 |! y$ l2 t g( l
- details: function() {
" D: X) _" h1 C& Y* M1 ? - return this.site + " - 学的不仅是技术,更是梦想!";
1 p) @- p* z0 P+ R1 w - }; R1 T% b, Y/ p; p
- }# N1 [+ t/ G7 P
- })
: A C& p2 q1 T+ S - </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">
9 r) I7 f# G" {" q2 k/ c - <h1>site : {{site}}</h1>
! ^0 v4 n; E I+ ~ - <h1>url : {{url}}</h1>' o" N3 t1 A; P* a! A; J
- <h1>{{details()}}</h1>
4 E! l0 t( C" S0 B+ _ - </div>
复制代码当一个 Vue 实例被创建时,它向 Vue 的响应式系统中加入了其 data 对象中能找到的所有的属性。当这些属性的值发生改变时,html 视图将也会产生相应的变化。 - <div id="vue_det">
: g2 J( i- ^; g - <h1>site : {{site}}</h1>6 l$ a, v* z; x6 K/ T) ]3 o
- <h1>url : {{url}}</h1>$ L7 ^% J% R0 Q
- <h1>Alexa : {{alexa}}</h1>
0 e) C( p2 g5 V" n - </div>5 F) E5 V% N3 u8 l
- <script type="text/javascript">
' M9 K; t1 X/ l' n - // 我们的数据对象
: O/ U' {3 B' W - var data = { site: "菜鸟教程", url: "www.runoob.com", alexa: 10000}
4 Z/ g* H5 n# l+ r. r5 P7 s - var vm = new Vue({
" A1 F5 D( p& \2 e. \+ M- q - el: '#vue_det',
( d* K2 x4 S/ a( j% q - data: data
+ m3 N. z8 ^3 F) z0 ? C - })4 V8 H7 b T3 D/ N% |3 F' m
- // 它们引用相同的对象!
0 X& g4 c k- D& ^, @ - document.write(vm.a === data.a) // true! p. J; u U+ f/ Q! K5 Z
- document.write("<br>")4 n: Z3 v& j4 u. B" @/ }+ E
- // 设置属性也会影响到原始数据
) U1 p) G0 f! m8 B - vm.site = "Runoob"" |+ d% @4 t% G1 d4 _* t( f9 ]
- document.write(data.site + "<br>") // Runoob! Q% x- A+ Z7 i0 c% l
- 8 E4 l( j+ O4 F0 E7 [- p
- // ……反之亦然1 Z1 [; _# I5 \& N" G. R7 p2 f
- data.alexa = 1234
' a% T6 t) Y3 Q( y - document.write(vm.alexa) // 1234
$ Y9 d( ]) L7 ~, M0 E - </script>
复制代码除了数据属性,Vue 实例还提供了一些有用的实例属性与方法。它们都有前缀 $,以便与用户定义的属性区分开来。例如: - <div id="vue_det">" G% a* H, j0 t' D
- <h1>site : {{site}}</h1>
% @# N- \- ?7 W8 D% u$ K R - <h1>url : {{url}}</h1>
/ _6 Q1 w9 W! v+ g" n" t - <h1>Alexa : {{alexa}}</h1>0 W7 W( l' k+ K' V9 @& _
- </div>
* g6 h8 G: F7 ^: ?# {# t! y - <script type="text/javascript">
& v9 R/ E- @; x5 c, L. U4 ? - // 我们的数据对象
! d3 P1 @1 b4 e - var data = { site: "菜鸟教程", url: "www.runoob.com", alexa: 10000}
( ^ R* P0 ^. v! v/ s - var vm = new Vue({
7 j& ^ Y: J- G/ _ - el: '#vue_det',
" ?( l0 J/ g4 H R, r - data: data
. I9 g7 A5 }4 M( d$ g6 w - })5 \" B. B6 \- H- F2 k5 N: w, l4 ~
- - B" a2 W7 v4 K% h/ K8 a4 ^, b$ {7 P
- document.write(vm.$data === data) // true$ L. r# N) y) S" `! S8 P
- document.write("<br>") // true
; L: Y2 `1 j% [# W3 } - document.write(vm.$el === document.getElementById('vue_det')) // true
# A( i* z C6 e4 S% h - </script>
复制代码
6 B' i( s& e- ]* K' E0 S7 F
# E) r; {3 U9 z% t5 _; L |