1

バックボーン ビューを自己初期化する簡単な方法があるかどうか疑問に思っています。私がやろうとしていることの例を示すのがおそらく最善です。

現在、バックボーン ビューを初期化するデフォルトの方法は次のとおりです。

var BBview = Backbone.View.extend({});
var myView = new BBview();

名前空間の理由から、バックボーン ビューを「自動」または「自己」で初期化したいと考えています。例えば。

var MyApp.MyView = Backbone.View.extend({}).initialize();

このように MyApp.MyView は自動的に私のビューになり、最初にバックボーン ビューになる変数を作成してから、別の変数を作成して初期化する必要がなくなります。うまくいけば、これは理にかなっています。どんな助けでも大歓迎です。みんなありがとう。

4

2 に答える 2

4

Backbone.View.extend()コンストラクター関数を返すので、それを呼び出すことができますnew。唯一のトリッキーな部分は、優先順位を正しくして、引数をコンストラクターへの引数としてextendではなく、括弧内に表示することです。new

var v = new (Backbone.View.extend({ ... }));

デモ: http://jsfiddle.net/ambiguous/TpmtH/

余分な括弧のセットがない場合:

var v = new Backbone.View.extend({ ... });

あなたは(多かれ少なかれ)これを行うでしょう:

var V = Backbone.View.extend;
var v = new V({ ... });

それはあなたが望むものではありません。

私はこの種のことをお勧めしません.6か月後にあなたのコードを見た人を混乱させ、困惑させるだけです. 名前空間の汚染を避けるために、関数を使用することをお勧めします。

var myView = (function() {
    var BBview = Backbone.View.extend({});
    return new BBview();
})();

それはそれほどきれいでも巧妙でもないかもしれませんが、一般的ですぐに認識できるパターンであるという大きな利点があります。

于 2012-12-18T22:52:31.663 に答える
1

new演算子で直接バックボーン ビューを初期化するだけです。

var myView = new Backbone.View();

または拡張を使用して:

var myView = new (Backbone.View.extend({ 
      initialize : function() { console.log('init'); } 
}));
于 2012-12-18T22:53:11.790 に答える