我正在构建一个使用backbone.js
的html页面如何覆盖骨干模型的构造函数?
让我用一个例子来解释一下: 我有2个型号,比方说M1和M2。 在M2构造函数中,我想放入和M1
m1=new M1({somedata:""});
m2=new M2({m1Ref: m1)
如果我这样做,m2将包含对m1的引用。 但是我需要的是m2要复制m1数据(somedata属性值应该复制到m2),所以我试图覆盖构造函数,并更改那里收到的数据
var M2=Backbone.Model.extend({
constructor: function(data){
data=_.extend(data, data.timmer);
data.timmer=undefined;
Backbone.Model.prototype.constructor.call(this, data);
}
}
但这不能正常工作。
如何正确覆盖构造函数?
由于
答案 0 :(得分:3)
好的,找到了解决方案。
var M2=Backbone.Model.extend({
constructor: function(data, opts){
data=_.extend(data, data.m1Ref);
data.m1Ref=undefined;
//new: we don't want to copy the id from m1 to m2
data.id=undefined;
Backbone.Model.prototype.constructor.call(this, data);
}
}