0

主要なバックボーン機能 (ビュー、モデル、ルーター) を独自のメンバーで拡張する必要があります。ただし、次の場合は正しく機能しません。

Backbone.View.prototype.foo = ["bar"];

確かにその表現は

testView = new Backbone.view.extend({})
testView2 = new Backbone.view.extend({})
alert(testView.foo.length);

状態 1 が設定

testView2.foo.push("blah");

参照が同一であるため、文字列も testView.foo に追加しました。

とにかく、これらのオブジェクトを拡張する方法を知っている人はいますか?

前もって感謝します :)

レオ

4

1 に答える 1

4

通常、標準のビューを拡張せず、代わりに独自の基本ビュー タイプを作成します。Backbone プロトタイプの値は変更しないでください。

var BaseView = Backbone.View.extend({
  foo: null,
  initialize: function(options){
    this.foo = ["bar"];

    Backbone.View.prototype.initialize.apply(this, arguments);
  }
});

var testView = new BaseView();
var testView2 = new BaseView();
console.log(testView.foo.length); // prints '1'
console.log(testView2.foo.length); // prints '1'    

testView2.foo.push("blah");

console.log(testView.foo.length); // prints '1'
console.log(testView2.foo.length); // prints '2'    
于 2012-08-18T16:10:34.593 に答える