Backbone JS - JSON响应被认为是实际的Backbone模型

时间:2012-07-06 19:49:11

标签: backbone.js

我正在使用骨干和一些嵌套模型。我在父级和子级模型上有一堆用于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()时,模型会更新,但“不是主干模型”会收到警报。

2 个答案:

答案 0 :(得分:0)

查看我对other问题的回答。我认为这是相关的:

https://stackoverflow.com/a/11368225/737318

如果这没用,请告诉我。

答案 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;
}