1

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

4

2 回答 2

0

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

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

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

于 2012-07-06T20:04:29.157 回答
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;
}
于 2012-07-07T03:47:59.780 回答