您的位置:首页 > 产品设计 > UI/UE

vue.js基础(2)

2018-03-26 20:03 155 查看

创建一个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))。因为箭头函数是和父级上下文绑定在一起的

生命周期图示

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: