如何在Collection或Model上使用本地JSON模拟fetch()?

时间:2013-07-02 03:55:04

标签: parsing backbone.js model fetch backbone-collections

我是Backbone的新手,尝试使用本地JSON文件进行测试,设置我的模型和嵌套在其中的集合。我现在有这样的事情:

var MyModel = Backbone.Model.extend({
    coll: null,
    initialize: function (attributes, options) {
        this.setData(attributes);
    },
    setData: function (data) {
        this.set("key1", data.key1);
        this.set("key2", data.key2);

        var coll = this.coll ? this.coll.reset(data.collData) : new MyCollection(data.collData);
        this.set("coll", coll);
    }
});
// ...
var myModel = new Model(jsonLoadedFromLocalFile);

但是,我的理解是,一旦我的服务器准备好返回数据,我就会使用Model.fetch()Collection.fetch(),并且会调用Model.parse()和{{1} } Collection.parse()是解析数据的适当位置(而不是我看似过于手动的parse())。

加载虚拟数据以测试具有嵌套集合的模型的首选方法是什么?

1 个答案:

答案 0 :(得分:1)

这似乎可以解决问题:

var MyModel = Backbone.Model.extend({
    defaults: {
        key1: "",
        key2: "",
        coll: null
    },
    initialize: function (attributes, options) {
        this.fetch({ url: attributes.url });
    },
    parse: function (response) {
        this.set("key1", response.key1);
        this.set("key2", response.key2);

        var coll = this.coll ? this.coll.reset(response.collData) : new MyCollection(response.collData);
        this.set("coll", coll);
    }
});
// ...
var myModel = new Model({ url: localJsonURL });

谢谢@muneebShabbir。