我正在使用骨干和一些嵌套模型。我在父级和子级模型上有一堆用于UI更新的更改处理程序(下面的简化版本)。我遇到的问题是,只要在父模型上调用save()并且JSON从服务器返回,子模型数据就会更新,但它不再被识别为Backbone模型,并且我的处理程序都会失败。
ChildModel = Backbone.Model.extend({
defaults: {
property: "property"
}
});
ParentModel = Backbone.Model.extend({
defaults: {
childModel: new ChildModel()
},
url : "resturl",
initialize: function () {
this.bind('change:childModel', this.changeHandler, this);
},
changeHandler: function () {
var child = this.get('childModel');
if(child instanceof Backbone.Model){
alert("is a backbone model");
} else {
alert("is not a backbone model")
}
}
});
var parent = new ParentModel();
parent.save()
当调用parent.save()时,模型会更新,但“不是主干模型”会收到警报。
答案 0 :(得分:0)
答案 1 :(得分:0)
考虑重写parse方法并更新childModel而不是其他方法。方法。这适用于保存模型更新的绑定事件。
parse: function ( response, xhr ) {
// don't update the models childData attribute
if ( this.get('childModel') instanceof ChildModel ) {
this.get('childModel').set( response.childData );
} else {
this.set({ childModel: new childModel( response.childData );
}
delete response.childData;
return response;
}