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

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 に答える
0

あなたの他の質問に対する私の答えをチェックしてください。私はそれが関連していると思います:

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

問題が解決しない場合は、お知らせください。

于 2012-07-06T20:04:29.157 に答える