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 には 1 対多の SearchMappings があり、すべての SearchMapping には 1 対多の SearchComponents があります。同期用の 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 に答える