如何将backbone.js与名称空间一起使用?

时间:2011-04-11 21:46:51

标签: javascript javascript-framework backbone.js javascript-namespaces

在过去一小时左右,我一直在努力让名称空间与backbone.js一起使用。

我看过:How do I declare a namespace in JavaScript?

我尝试了所有方法。这是问题所在:

Backbone.Controller希望通过constructur(“new keyword”)初始化,因为否则将不会设置Backbone.history。这是我试图放入命名空间的代码,例如“Site.Controllers”

var MainController = Backbone.Controller.extend({

   routes: {
       "help":                 "help",    // #help
   },

   help: function(){}
});

var ws =  new MainController

每当我尝试将MainController放入某个命名空间时,backbone.js会抱怨MainController不是构造函数 - 当然它确实如此,因为似乎没有任何方法可以使用构造函数创建名称空间“tree” 。如果你们想要,我可以列出我尝试的所有方法,但它与上面提供的链接完全相同。我没有尝试将它放入封闭中,因为这被认为非常慢。

1 个答案:

答案 0 :(得分:1)

var namespace = {
    MainController: Backbone.Controller.extend({ ... }),
    HelpController: Backbone.Controller.extend({ ... }),
    ...
};

我对你想要达到的目标感到困惑。创建命名空间的几乎失败证明方法是:

var namespace = (function() {
    ...

    return {
        ...
    };

})();

同样是封闭确实更慢。但除非你创造数百万次关闭,否则我不会担心这一点。