モデルの既存のインスタンスをバックボーンの他のタイプの派生モデルに拡張するのに問題がありますか?バックボーンのモデルの既存のインスタンスを派生モデルのインスタンス(javaでのキャストのような)に拡張/キャスト
を私が可能ということで、バックボーンに派生モデルの他のタイプのモデルの既存のインスタンスを拡張する問題があります。その場合
が、これは、助けてください私は何をする必要があるかの例ですか?もしそうなら
が、これは私が何をする必要があるかの一例である、助けてください:
var A = Backbone.Model.extend({
initialize: function(options){
console.log('A initialized');
},
foo : function(){
console.log('foo of A');
}
});
var B = Backbone.Model.extend({
initialize: function(options){
A.prototype.initialize.apply(this, [options]);
console.log('B initialized');
},
foo : function(){
console.log('foo of B');
},
goo : function(){
console.log('goo of B');
}
});
var ACollection = Backbone.Collection.extend({
model: A
});
var BCollection = Backbone.Collection.extend({
model: B
});
var aa = new ACollection();
var bb = new BCollection();
aa.add(new A({
attr1:1,
attr2:2,
attr3:3
})); // **A initialized**
// later after a while
var a = aa.at(0);
var b = cast a to type B <---- how to do this
bb.add(b);
// later after a while
console.log(bb.at(0).get('attr1')); // **1**
b.goo(); // **goo of B**
b.foo(); // **foo of B**
a.set({attr1:'new1'});
console.log(bb.at(0).get('attr1')); // **new1**
私はモデルのクローンを作成したくない「」、I「」は他の場所の属性を変更する可能性があるため、また、 'b'も変更されていることを確認したい(同じオブジェクト) ありがとう 'a'の属性を別の場所に変更する可能性があるため、モデル 'a'を複製したくないので、 'B' に変更(同じオブジェクト) おかげ
ありがとう@T Jが、私の望むものではありません。私は 'a'を 'b'と同じオブジェクトにします。したがって、 'a'の属性を変更すると、 'b'で定義されていても、この変更のすべてのハンドラーがトリガーされます。私の質問で以前に述べたように( 'b'は 'a'の同じ目的です)。 –
@saleemdiab 'a'と' b'は同時に異なるオブジェクトと同じオブジェクトであることはできません。それは意味をなさない。 –