javascript代码实例教程-[Backbone.js]如何处理Model里面嵌入的Collection?

发布时间:2019-02-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-[Backbone.js]如何处理Model里面嵌入的Collection?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 写了近个月的backbone.js代码,从一开始的todo到现在做仿微信的网页聊天,其中最大的困惑就在于如何处理比较复杂的Model,其内嵌了一个或者多个Collections。

 

假设我们有一个PErson的Model,一个Person会有多个工作,那么我们将jobs这个属性设置为一个Collection:

 

初始化代码如下:

 

复制代码

VAR Job = Backbone.Model.extend({

 

});

 

var Jobs = Backbone.Collection.extend({

    model:Job,

});

 

var Person = Backbone.Model.extend({

    

});

复制代码

下一步,给Person设置jobs的属性:

 

var Person = Backbone.Model.extend({

    inITialize:function(options){

        this.set('jobs',options.jobs);

    }

});

然后创建jobs的collection以及person object,将jobs赋值给person.jobs属性:

 

var jobs = new Jobs([{name:'PHP工程师'},{name:'设计师'},{name:'测试人员'}]);

var jimmy = new Person({jobs:jobs});

通过chrome的console看到值:

 

 

 

 

 

我们添加一些view,因为在backbone.js里view才是MVC里的Controller:

 

复制代码

var PersonView = Backbone.View.extend({

    tagName:'ul',

 

    initialize:function(){

        this.render();

 

        this.model.get('jobs').on('add',this.addFirst,this);

    },

 

    adDFirst:function(job){

        var jobView = new JobView({model:job});

        this.$el.PRepend(jobView.render().el);

    },

 

    renderOne:function(job){

        var jobView = new JobView({model:job});

        this.$el.append(jobView.render().el);

    },

 

    render:function(){

        var jobs = this.model.get('jobs');

 

        jobs.each(function(job){

            this.renderOne(job);

        },this);

 

        $(document.body).append(this.el);

    }

});

 

var JobView = Backbone.View.extend({

    tagName:'li',

 

    template:'<%=name%>',

 

    initialize:function(){

        this.model.on('change',this.render,this);

    },

 

    render:function(){

        var template = _.template(this.template,this.model.toJSON());

        this.$el.htML(template);

        return this;

    },

});

复制代码

这里要为Job单独设置一个view是因为一个model对应一个view的'BB原则',方便在model改变的时候,view改变。

 

最后new PersonView:

 

var jimmyView = new PersonView({model:jimmy}); 

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-[Backbone.js]如何处理Model里面嵌入的Collection?全部内容,希望文章能够帮你解决javascript代码实例教程-[Backbone.js]如何处理Model里面嵌入的Collection?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。