0

私のbackbone.jsモデルには配列プロパティがあります。changeイベントをにバインドしましたsave()

sync()(によってトリガーされた後save()、私のアプリサーバーは同じJSONを返しますが、バックボーンは配列が変更されたと見なし(私が推測する配列への参照が異なるためですか?)、再び変更をトリガーします。その後、無限ループが発生します。

save() -> sync() -> triggered `change` -> save()...

何をすればよいでしょうか?

アイデア:変更された属性がオブジェクト/配列型であるかどうかをチェックする関数に変更イベントをバインドし、配列/オブジェクトが実際に変更された場合にのみ詳細な比較と保存を呼び出すことができます。trueの場合、save()

ありがとう!

4

2 に答える 2

1

バックボーンのエッジバージョン(マスターブランチ)を試してください。この動作は0.9.9以降に変更されました-https://github.com/documentcloud/backbone/pull/2004を参照してください

于 2013-01-08T23:54:14.697 に答える
0

バックボーンには、この種の問題を防ぐための多くの方法に関する特別なオプションがありますsilent:true。そのオプションをsaveメソッドに渡すと、結果syncは変更イベントをトリガーしません。

したがって、変更イベントハンドラーをサイレントに保存するように設定する場合は、次のようになります。

changeHandler: function() {
    this.save({silent:true});
}

トリックを行う必要があります。

于 2013-01-08T20:50:39.617 に答える