骨干集合的基本问题

时间:2012-10-29 16:14:57

标签: javascript collections backbone.js models

试图绕过Backbone,并且正在努力工作,直到我遇到下面的障碍,这让我觉得我错了。

在下面的代码中,我有一个模型和一个集合。该集合称为bb.model.Settings,是一个名为changetheme的函数,它获取一个值。现在我有了这个目标的价值,但是当我去保存这个项目时,我是否需要将它传递给模型。我试图在模型中调用save函数,但我想知道我是否真的需要这个,它仍然会失败。我应该保存集合还是保存此内容的最佳方法

bb.model.Setting = Backbone.Model.extend(_.extend({    
    defaults: {
        theme: 'e'
    },

    initialize: function() {
        var self = this
        _.bindAll(self)
    },
    save: function() {
        var self = this
        _.bindAll(self)
    },
}))


bb.model.Settings = Backbone.Collection.extend(_.extend({  
    model:  bb.model.Setting,
    localStorage: new Store("settingb"),

    initialize: function() {
        var self = this
        _.bindAll(self)
    },
    changetheme: function(value) {
        var self = this
        _.bindAll(self)
        this.remove
        this.model.save() 
    },
}))

1 个答案:

答案 0 :(得分:2)

尝试检查这个小提琴,你的代码中有几个错误:

http://jsfiddle.net/8gDqb/1/

这是js部分,请参阅完整工作示例的小提琴:

var bb = {};
bb.model={};

bb.model.Setting = Backbone.Model.extend({    
    defaults: {
        theme: 'e'
    },

    initialize: function() {
        var self = this
        //_.bindAll(self) // no longer necessary with backbone.js
    },
    save: function() {
        var self = this
        //_.bindAll(self) // no longer necessary with backbone.js
    },
});


bb.model.Settings = Backbone.Collection.extend({  
    model:  bb.model.Setting,
    //localStorage: new Store("settingb"),

    initialize: function() {
        var self = this
        //_.bindAll(self) // no longer necessary with backbone.js
    },
    changetheme: function(value) {
        var self = this
        _.bindAll(self)
        //this.remove
        //_.bindAll(self) // no longer necessary with backbone.js
    },
});

另外,如果你正在阅读关于网络骨干的旧方法,你不再需要bindAll了。这已经很久没有必要了。