1

我正在尝试在 Backbone 中使用尽可能多的 OOTB 同步和 RESTful 功能。我为模型的基本 CRUD 设置了 Web API。我有:

var SearchModel = Backbone.Model.extend({});
var SearchMappingModel = Backbone.Model.extend({});
var SearchComponentModel = Backbone.Model.extend({});

var SearchCollection = Backbone.Collection.extend({});
var SearchMappingCollection = Backbone.Collection.extend({});
var SearchComponentCollection = Backbone.Collection.extend({});

对于每个 Search,都有一对多的 SearchMapping,对于每个 SearchMapping,都有一对多的 SearchComponent。我的同步 URL 类似于 Search 集合的“/search”,SearchMapping 集合的“'/searchmapping/' + searchId”和 SearchComponent 集合的“'/searchcomponent/' + mappingId”。

我的问题是,由于每个集合都依赖于前一个集合,有没有办法可以在主干中建立级联关系以最小化我的代码并尽可能多地使用已经存在的基本同步功能?

我最初的想法是在集合中创建一个集合并编写我自己的 .fetch() 以首先获取父集合并在其成功时获取子集合,然后在其自身成功后也将获取其子集合,如下所示:

var SearchCollection = Backbone.Collection.extend({
    model: SearchModel,
    initialize: function (data) {
      this.url = baseURL + "/search";
      this.data = data;
      this.SearchMappingCollection = new SearchMappingCollection();
    },
    fetchData: function () {
      this.fetch({
        success: _.bind(function (results) {
          this.fetchListSuccess(results);
        }, this)
      });
    },
    fetchListSuccess: function (results) {
      this.SearchMappingCollection.fetchData(results);
    }

对 .save() 也是如此。这可能是一种很好的方法,但希望从其他做过类似事情的人那里获得反馈。

4

1 回答 1

0

我最终没有使用级联格式。似乎它增加了更多的复杂性,却没有给予任何回报。现在所有 3 个集合都位于控制器级别,我只是在每个“重置”事件加载每个集合后加载下一个集合。

于 2013-03-15T20:14:35.893 回答