|
Vue.js 起步 每个 Vue 应用都需要通过实例化 Vue 来实现。 语法格式如下: - var vm = new Vue({, [& i# b/ v3 N8 O% a
- // 选项
+ U* x! K U8 r: D0 A: ]) M6 S - })
复制代码接下来让我们通过实例来看下 Vue 构造器中需要哪些内容: - <div id="vue_det">% b5 n" @" {+ T" |9 ^" z6 h, G
- <h1>site : {{site}}</h1>
$ b) x n9 E4 K6 n. ? - <h1>url : {{url}}</h1>, B# d2 g3 L8 r; |" M) c
- <h1>{{details()}}</h1>; _8 I. @7 |: r7 R
- </div>
4 w0 O- f& j4 v9 s, c1 m" ] - <script type="text/javascript">
8 s/ e6 I, G5 v% Z+ I2 P - var vm = new Vue({( x; Q: l6 `' K, d0 i
- el: '#vue_det',% s" v: D' k$ u0 l- p% f- y: S$ ]
- data: {4 O! V3 C6 q% [* v5 O
- site: "菜鸟教程",7 b# q8 H. P( U t
- url: "www.runoob.com",
% F( A0 C% A. L2 U W) l& R - alexa: "10000"5 P0 Y) t, O8 w
- },5 I9 |5 }! Y. R' Y6 Z- ~
- methods: {: Y, W% Z9 Q8 P2 N0 T$ e5 ]: X, P
- details: function() {) a/ O. E- J) I _8 a; z1 h
- return this.site + " - 学的不仅是技术,更是梦想!";9 O) Y) i; `: b k% ~
- }
. i( K( G+ u0 q# _7 H$ Z - }
/ `8 N" r, {- Y2 `( u s - })
! k. j7 ]" n* j! f$ [ - </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">4 W* A' s. W) @& F$ F L {& M; M4 h
- <h1>site : {{site}}</h1>" {6 d" W9 f% M i
- <h1>url : {{url}}</h1> A* _- ]- K* y. t+ B0 `1 T- T. i
- <h1>{{details()}}</h1>
! |# J. z* W8 l, p - </div>
复制代码当一个 Vue 实例被创建时,它向 Vue 的响应式系统中加入了其 data 对象中能找到的所有的属性。当这些属性的值发生改变时,html 视图将也会产生相应的变化。 - <div id="vue_det">2 F$ u. D& w/ a- g8 l0 G4 T
- <h1>site : {{site}}</h1>
T1 Z9 I2 z5 x' T" M+ y% Y6 W - <h1>url : {{url}}</h1>
8 y7 t% W! i {1 i9 s& h" X) L - <h1>Alexa : {{alexa}}</h1>4 f( v0 D; p) I3 ]
- </div>6 T3 e+ h* k& v8 c6 ?
- <script type="text/javascript">
5 r+ }+ w7 V8 M% X - // 我们的数据对象& ~2 m0 f$ |, W j6 k! y& N
- var data = { site: "菜鸟教程", url: "www.runoob.com", alexa: 10000}
. U7 }, ~# W& _* c* T - var vm = new Vue({8 z# @' ` n& B9 V# @8 u4 R
- el: '#vue_det',: T h6 B# _4 z4 N
- data: data! z1 Z- O9 C# t" m) s
- }): C" c% Z" I1 c' w4 u9 k; p
- // 它们引用相同的对象!
6 w" x: u* ^% w0 p - document.write(vm.a === data.a) // true* {1 T& _! X! z' C3 }" E0 g! E7 W4 V; J
- document.write("<br>")
" k8 |! c4 t! D, q - // 设置属性也会影响到原始数据
- f/ @, Q! Z# C/ V+ V) R* @$ q - vm.site = "Runoob"
5 t1 S0 k1 {6 s! R$ D: f6 V - document.write(data.site + "<br>") // Runoob( K& r; i/ i4 o @
- ; ~) C- K$ a- m# J) I
- // ……反之亦然
2 \" `: ]; _/ ?! H - data.alexa = 1234, g. O& V3 B4 G1 `' E3 _7 i
- document.write(vm.alexa) // 1234
* a5 C6 N' `0 [1 ]/ S - </script>
复制代码除了数据属性,Vue 实例还提供了一些有用的实例属性与方法。它们都有前缀 $,以便与用户定义的属性区分开来。例如: - <div id="vue_det">/ }* {9 D: [4 j: R& Z4 w& N) I
- <h1>site : {{site}}</h1>
* y u9 `$ u( O! A3 r) B/ Z - <h1>url : {{url}}</h1>
- |! t. f/ _' c9 ]% D% {+ E2 l - <h1>Alexa : {{alexa}}</h1>
8 ^$ J7 Z0 c( h C1 h - </div>
u& Y0 g0 ^8 Y0 p6 I - <script type="text/javascript">. [/ i5 |! a! _5 M
- // 我们的数据对象
* @ a+ ?* C: p' T9 P' l0 b - var data = { site: "菜鸟教程", url: "www.runoob.com", alexa: 10000}
8 F. H, Q( G* q! M8 l - var vm = new Vue({
7 p# N$ }7 K8 I. ] X - el: '#vue_det',
: v8 ~0 Q$ \& q% Z; P. K @+ ~ - data: data
, z: V4 R7 S i7 w6 N: R6 J, P - })# w; ]5 L; y0 f. p3 D
- ; v- H% u; i6 G0 E9 A8 i
- document.write(vm.$data === data) // true+ d3 @* Q6 q- l, A
- document.write("<br>") // true2 s" m6 n. t& R$ }2 y2 Y4 [
- document.write(vm.$el === document.getElementById('vue_det')) // true
7 |; _. y" y6 q \ - </script>
复制代码 : s; {4 x1 H8 f" ]
# o. J! D7 ~' ^' @0 f+ m4 U |