【问题标题】:How do I use backbone.js with namespaces?如何使用带有命名空间的主干.js?
【发布时间】:2011-08-03 10:22:58
【问题描述】:

在过去的一个小时左右,我一直在尝试让命名空间与骨干网一起工作。

我已阅读:How do I declare a namespace in JavaScript?

我尝试了所有方法。问题来了:

Backbone.Controller 希望通过构造函数(“新关键字”)进行初始化,否则将不会设置 Backbone.history。这是我试图放入命名空间的代码,例如“Site.Controllers”

var MainController = Backbone.Controller.extend({

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

   help: function(){}
});

var ws =  new MainController

每当我尝试将 MainController 放入某个命名空间时,backbone.js 都会抱怨 MainController 不是构造函数 - 当然是,因为似乎没有任何方法可以使用构造函数创建命名空间“树” .如果你们愿意,我可以列出我尝试过的所有方法,但它与上面提供的链接完全相同。我没有尝试将其放入闭包中,因为建议这样做很慢。

【问题讨论】:

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


    【解决方案1】:
    var namespace = {
        MainController: Backbone.Controller.extend({ ... }),
        HelpController: Backbone.Controller.extend({ ... }),
        ...
    };
    

    我对您想要达到的目标感到困惑。创建命名空间的一种几乎不会失败的方法是:

    var namespace = (function() {
        ...
    
        return {
            ...
        };
    
    })();
    

    也是的,关闭确实更慢。但是我不会担心这个,除非你创建了数百万次的闭包。

    【讨论】:

    • 谢谢你,我一直在犯愚蠢的错误。我没有包含包含代码的外部 javascript 文件,所以我的命名空间是未定义的,然后我开始摆弄,我不断收到新的错误......哦,好吧。太习惯了c#
    猜你喜欢
    • 2023-03-16
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多