vue.js实战学习——数据绑定

 注:此内容摘抄自:梁灏的《Vue.js实战》

注:记得要引入vue.js才能运行哦,文章中贴出的代码直接复制是不行的,html css js 都放在了一起,而且也没有引用vue.js。

1.vue.js应用创建很简单,通过构造函数Vue就可以创建一个Vue的根实例,并启动Vue应用:

1 var app=new Vue({
2       //选项  
3 })

变量app就代表了这个Vue实例。事实上,几乎所有的代码都是一个对象,写入Vue实例的选项内。

首先,必不可少的一个选项就是el。el用于指定一个页面中已存在的DOM元素来挂载Vue实例,它可以是HTMLElement,也可以是CSS选择器。

var app=new Vue({
   el:'#app'     //或者'document.getElementById('app')' 
})

通过Vue实例的data选项,可以声明应用内需要双向绑定的数据。建议所有会用到的数据都预先在data内声明,这样不至于将数据散落在业务逻辑中,难以维护。

Vue实例本身也代理了data对象里所有属性。

var app=new Vue({
    el:'#app',
    data:{
        a:2   
     } 
});
console.log(app.a);

除了显式的声明数据外,也可以指向一个已有的变量,并且他们只见默认建立了双向绑定,当修改任意一个是,另一个也会一起变化。  

2.每个Vue实例创建时,都会经历一系列的初始化过程,同伙私也会调用相应的生命周期钩子,我们可以利用这些钩子,在合适的时机执行我们的业务逻辑。

比较常用的有:

created:实例创建完成后调用,此阶段完成了数据的观测等,但尚未挂载,$el还不可用。需要初始化处理一些数据是会比较有用。

mounted: el挂载到实例上后调用,一般我们的第一个业务逻辑会在这里开始。

beforeDestroy: 实例销毁之前调用,主要解绑一些使用addEventListener 监听的事件等。

这些钩子与el和data类似,也是作为选项写入Vue实例内,并且钩子的this指向的是调用它的Vue实例

var app=new Vue({
    el:'#app',
    data:{
        a:2   
     } ,
    created:function(){
        console.log(this.a); //2
     },
    mounted:function(){
        console.log(this.$el);   //<div id="app"></div>
    }
});

3.使用双大括号“{{}}”是最基本的文本插值方法,它会自动将我们双向绑定的数据实时显示出来。

var app3=new Vue({
    el:'.app3',
    data:{
           date:new Date()
    },
    mounted:function(){
        var _this=this;  //声明一个变量指向Vue实例this,保证作用域一致
        this.timer=setInterval(function(){
            _this.date=new Date(); //修改数据date
        },1000);
    },
    beforeDestroy:function(){
        if(this.timer){
            clearInterval(this.timer); //在实例销毁前,清除我们的定时器
        }
    }
});

如果想输出HTML,而不是将数据解释后的纯文本,可以使用 v-html:

<div class="app4">
    <span v-html='link'></span>
</div>

var app4=new Vue({
    el:'.app4',
    data:{
        link:'<a href="#">这是一个链接哦</a>'
    }
});

Vue.js只支持单个表达式,不支持语句和流控制。另外,在表达式中,不能使用用户自定义的全局变量,只能使用Vue白名单内的全局变量,例如Math和Date。

4.Vue.js支持在{{}}插值的尾部添加一个管道符(|)对数据进行过滤,经常用于格式化文本。过滤的规则是自定义的,通过Vue实例添加选项filters来设置。

<div class="app6">
    {{date|formatDate}}
</div>
var padDate=function(value){
    return value<10?'0'+value:value;
};
var app6=new Vue({
    el:'.app6',
    data:{
        date:new Date()
    },
    filters:{
        formatDate:function(value){
            var date=new Date(value);
            var year=date.getFullYear();
            var month=padDate(date.getMonth()+1);
            var day=padDate(date.getDate());
            var hours=padDate(date.getHours());
            var minutes=padDate(date.getMinutes());
            var seconds=padDate(date.getSeconds());
            return year+'-'+month+'-'+day+' '+hours+':'+minutes+':'+seconds;
        },
                    
    },
    mounted:function(){
        var _this=this;
        this.timer=setInterval(function(){
            _this.date=new Date();
        },1000);
    },
    beforeDestory:function(){
        if(this.timer){
            clearInterval(this.timer);
        }
    }
})

 注:此内容摘抄自:梁灏的《Vue.js实战》

posted @ 2017-12-13 10:44  塞夏的春天  阅读(488)  评论(0)    收藏  举报