7

私は、RequireJSを使用してバックボーンにネストされたカテゴリ構造を設定しています。バックボーン/ RequireJSネストリストの循環依存性

この構造では、カテゴリコレクションにカテゴリモデルが含まれ、単一のカテゴリモデルにはカテゴリコレクションが含まれます。

残念ながら、これはRequireJSの恐ろしい循環依存性の問題を引き起こすようです。私はRequireJS(http://requirejs.org/docs/api.html#circular)の文書を読んだが、 'a'と 'b'を混乱させて説明を探している。ここで

は、問題を引き起こしている私のコードです:

define([ 

    "jquery", 
    "underscore", 
    "backbone", 
    "collections/categories" 

    ], function($, _, Backbone, CategoriesCollection) { 

    var Category = Backbone.Model.extend({ 

     defaults: { 
      title: "Untitled" 
     }, 

     parse: function(data) { 
      this.children = new CategoriesCollection(data.children, {parse: true}); 
      return _.omit(data, "children"); 
     } 

    }); 

    return Category; 

}); 

...

define([ 

    "jquery", 
    "underscore", 
    "backbone", 
    "models/category" 

    ], function($, _, Backbone, CategoryModel) { 

    var Categories = Backbone.Collection.extend({ 
     model: CategoryModel 
    }); 

    return Categories; 

}); 

前にこれを経験したことのある人は、正しい方向に私を操縦助けることができる場合、私は疑問に思って。あなたはBackbone Relationalのようなプラグインを使用するために検討すべきであるあなたの助けのために(事前に)

おかげで、このために

答えて

11

輸入

+0

素晴らしい、ありがとう – user1031947

+0

男 - 私は自分のプロジェクトの中で循環依存性の問題を見つけようとしていて、これは本当に私を助けてくれました。 – Stevus

+0

2回目のコレクションの読み込みが非同期である可能性があるため、これは問題を引き起こす可能性がありますか? –

0

define([ 

    "jquery", 
    "underscore", 
    "backbone", 
    "collections/categories" 

    ], function($, _, Backbone, CategoriesCollection) { 

    var Category = Backbone.Model.extend({ 

     defaults: { 
      title: "Untitled" 
     }, 

     parse: function(data) { 
      if(!CategoriesCollection){ 
       CategoriesCollection = require("collections/categories"); 
      } 

      this.children = new CategoriesCollection(data.children, {parse: true}); 
      return _.omit(data, "children"); 
     } 

    }); 

    return Category; 

}); 

の例では、彼らはまた、requireインポートするが、それはまたなしで動作するはずです:あなたはちょうどあなたがモデルでそれを必要とするときコレクションの受け渡しは、最初は未定義することができますよう、改めてrequireコレクションを使用する必要が

+0

ありがとう、私はバックボーンリレーショナルを見ました。私は、必要なすべてのものである単純なネストされたリストの場合、それはちょっと残酷です。 – user1031947