创建一个Vue实例
++每个Vue应用都是通过Vue函数创建一个新的Vue实例开始的++
var vm = new Vum({
//选项
});
一个 Vue 应用由一个通过 new Vue 创建的根 Vue 实例,以及可选的嵌套的、可复用的组件树组成。举个例子,一个 todo 应用的组件树可以是这样的:
所有的Vue组件都是Vue实例,并且接受相同的选项对象(一些根实例特有的选项除外)
数据与方法
当一个Vue实例被创建时,向Vue的响应式系统中加入了其data对象中能找到的所有的属性。当这些属性的值发生改变时,视图将会发生响应,即匹配更新为新的值。
//数据对象
var data = {a:1}
//该对象加入到一个Vue实例中
var vm = new Vue({
data:data
})
//获取这个实例上的属性
//返回原数据中对应的字段
vm.a == data.a //=> true
//设置属性也会影响到原始数据
vm.a=2;
data.a //=>2
//反之亦然
data.a=3;
vm.a // =>3
当这些数据改变时,视图会进行重渲染。只有当实例被创建时data中存在的属性才是响应式的
当添加一个新属性
vm.b = 'hi'
对==b==的改动将不会触发任何视图的更新
如果你将需要一个属性,但刚开始为空或不存在,那你只需设置一些初始值,
eg
data:{
newTodoText:"",
visitCount:0,
hideCompletedTodos:false,
todos:[],
error:null
}
例外:使用==Object.freeze()==,会阻止修改现有的属性,就是说影响系统无法再追踪变化
var obj = {
foo:'bar'
};
Object.freeze(obj);
new Vue({
el:'#app',
data:obj
});
<div id="app">
<p>{{foo}}</p>
<!--这里‘foo’ 不会更新-->
<button @click="foo = 'baz'">Change it</button>
</div>
实例属性与方法
都有前缀”$”,以便与用户定义的属性区分开来
var data = {a:1};
var vm = new Vue({
el:"#example",
data:data
});
vm.$data === data; //=>true
vm.$el === document.getElementById(example); //=>true
//$watch是一个方法实例
vm.$watch('a',function(newValue,oldValue){
//这个回调将在‘vm.a’改变后调用
});
实例生命周期钩子
每个Vue实例在被创建时都要经过一系列的初始化过程(需要设置数据监听,编译模版,将实例挂载到DOM并在数据变化时更新Dom等)。同时在这个过程中也会运行一些叫做生命周期钩子的函数,用户可以在不同阶段添加自己的代码。
例如:==created==钩子可以用来在一个实例被创建之后执行代码:
new Vue({
data:{
a:1
},
created:function(){
//"this" 指向vm实例
console.log('a is'+this.a)
}
});
还有其他一些钩子,在实例生命周期的不同阶段被调用,如==mounted== ==update== ==destroyed== 生命周期钩子的==this== 上下文指向调用它的Vue实例。
注:不要在选项属性或回调函数上使用==箭头函数==(created:()=>console.log(this.a))。因为箭头函数是和父级上下文绑定在一起的
生命周期图示
略