循环参考骨干模型+ require.js

时间:2013-09-17 15:46:52

标签: backbone.js requirejs circular-dependency

我正在尝试使用backbone.js模型创建一个树,但我遇到了问题:

收藏:MCollection

define
(
    ['backbone', 'models/M'],
    function(Backbone, M)
    {
        'use strict';        

        return Backbone.Collection.extend
        (
            {
                model: M,
                }
            }
        );
    }
);

以及具有依赖于该模型的集合的模型......

型号:M

define
(
    ['backbone', 'underscore', 'vent', 'collections/MCollection'],
    function(Backbone, _, vent, MCollection)
    {
        'use strict';

        return Backbone.Model.extend
        (
            {               
                _children : null,


                initialize : function(attributes, options)
                {


                    this._children = new MCollection();

                },
            }
        ); 
    }
);

所以发生了什么..我加载模型M,但在模型中我也创建了一个集合,其模型为:M,所以它相互依赖...因此MCollection的模型仍未定义,虽然它应该引用M。

我试过想我怎么能解决这个问题,但我找不到办法做到这一点。你呢?

1 个答案:

答案 0 :(得分:0)

循环依赖通常是糟糕设计的标志。我建议您重新考虑这个问题并尝试以其他方式解决它。例如,您是否需要使用集合创建模型?如果希望能够传递任意对象并将它们实例化为模型,则只需要集合中的模型字段。如果您始终将M模型添加到集合中,则无需在集合中引用它。