2

過去 1 時間ほど、backbone.js で名前空間を動作させようと試みてきました。

私は読んだ: 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 がコンストラクターではないと不平を言います。必要に応じて、私が試したすべてのアプローチをリストできますが、上記のリンクとまったく同じです。非常に遅いことが示唆されているため、クロージャーに入れようとはしませんでした。

4

1 に答える 1

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

あなたが何を達成しようとしているのか、私は混乱しています。名前空間を作成するほぼ失敗しない方法は次のとおりです。

var namespace = (function() {
    ...

    return {
        ...
    };

})();

また、はい、閉鎖は確かに遅くなります。しかし、クロージャーを何百万回も作成しない限り、これについては心配しません。

于 2011-04-11T22:00:58.943 に答える