Vue实例
每个Vue应用都是通过Vue函数创建的Vue实例:
var 变量名 = new Vue({
})
当你创建了一个Vue实例时,你可以传入一个选项对象。以下时data属性的一些用法:
//自己创建的数据对象
var data = { a: 1 }
//将数据对象加入到Vue实例中
var v = new Vue({
data: data
})
//设置属性影响原始数据
v.a = 3 => data.a = 3
//反过来一样成立
data.a = 5 => v.a = 5
在这里要注意的是只有当实例被创建时data中存在的属性才时响应式的。也就是说直接v.b = 5
那么b的改动将不会触发任何视图的更新。如果你需要一个属性,但是一开始它是个空值,那就需要设置一些初始值。
唯一的例外就是Object.freeze()
,他会修改现有的属性,也意味着相应系统无法再追踪变化。例如:
var obj = {
foo: 'bar'
}
Object.freeze(obj)
new Vue({
el: '#app',
data: obj
})
<div id="app">
<p>{{ foo }}</p>
<!-- 这里的 `foo` 不会更新! -->
<button v-on:click="foo = 'baz'">Change it</button>
</div>
除了数据属性之外,Vue还有一些其他的用法,加上前缀$
,以便于和用户定义的属性区分:
var data = {a:1}
var v = new Vue({
el:'#example',
data:data
})
v.$data === data
v.$el === document.getElementById('example')
v.$watch('a',function(newValue,oldValue){
})
实例生命周期钩子
每个Vue实例在被创建的时候都要经历一系列的初始化过程。例如,需要设置一些监听,编译模板,挂载实例到DOM并在数据变化时更新Dom等。在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。
比如created
钩子用来在一个实例被创建后执行。还有一些其他的钩子,例如mounted
updated
destroyed
。生命周期钩子的this
指向调用它的Vue实例。