Backbone.js 主干JS-JSON响应被识别为实际主干模型

Backbone.js 主干JS-JSON响应被识别为实际主干模型,backbone.js,Backbone.js,我正在使用一些嵌套模型的主干。我在父模型和子模型上有一组用于UI更新的更改处理程序(下面是简化版本)。我遇到的问题是,只要我在父模型上调用save(),JSON从服务器返回,子模型数据就会更新,但它不再被识别为主干模型,我的处理程序都会失败 ChildModel = Backbone.Model.extend({ defaults: { property: "property" } }); ParentModel = Backbone.Mo

我正在使用一些嵌套模型的主干。我在父模型和子模型上有一组用于UI更新的更改处理程序(下面是简化版本)。我遇到的问题是,只要我在父模型上调用save(),JSON从服务器返回,子模型数据就会更新,但它不再被识别为主干模型,我的处理程序都会失败

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()时,会更新模型,但会发出“不是主干模型”的警报。

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


如果没有帮助,请告诉我。

考虑覆盖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;
}

谢谢你,蒂姆。明天我会深入讨论这件事,让你知道我进展如何!