Backbone / RequireJS嵌套列表中的循环依赖

我在Backbone中使用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; }); 

我想知道之前经历过这种情况的人是否可以帮助引导我朝着正确的方向前进。

在此先感谢您的帮助,

您只需要在模型中需要时再次使用require集合,因为最初传递的Collection可以是未定义的:

 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但它也应该没有导入。

为此,您应该考虑使用像Backbone Relational这样的插件。