vue.js基础(2)

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

生命周期图示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值