开发者

How do I use backbone.js with namespaces?

I have been trying to get namespaces to work with backbone.js for the last hour or so.

I have read: How do I declare a namespace in JavaScript?

And I tried all approaches. Here is the problem:

Backbone.Controller wants to be initialized through a constructur ("new keyword"), because otherwise Backbone.history won't be set. This is the code that I'm trying to put into a namespace, for example "Site.Controllers"

var MainController = Backbone.Controller.extend({

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

   help: function(){}
});

var ws =  new MainController

Whenever I try to put the MainController into some namespace, backbone.js complains that MainController is not a constructor - of course it does, because there doesn't seem to be any way to make a namespace "tree" with constructor functions. If you guys want, I ca开发者_StackOverflown list all the approaches I tried, but it's exactly the same as from the link provided above. I didn't try putting it into closures, because that is suggested to be very slow.


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

I'm confused as to what your trying to achieve. An almost fail proof method of creating a namespace is :

var namespace = (function() {
    ...

    return {
        ...
    };

})();

Also yes closures are indeed slower. But I would not worry about this unless your creating the closures millions of times.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜