ユーザー モデル (Backbone.js) があり、その設定属性を更新してサーバーに保存したいと考えています。設定は JSON 形式で、設定は文字列バージョンで、settingsJSON はオブジェクト バージョンです。関数をそれぞれの変更イベントにバインドして、一方が変更されると他方が更新されるようにします。
私が抱えている問題は、変更されたハンドラーの実行が完了する前に保存メソッドが実行されていることです。そのモデルのすべてのイベントハンドラーが完全であることを確認する方法はありますか?
私はそれをどのように呼んでいますか:
currentUser.get('settingsJSON').apps = appsEnabled;
currentUser.save();
私のイベントハンドラ:
Initialize: function() {
var that = this;
this.on("change:settingsJSON", function(model){
model.set({settings: JSON.stringify(model.get('settingsJSON'))});
});
this.on("change:settings", function(model){
model.set({settingsJSON: JSON.parse(model.get('settings'))});
});
}
@フェンクリフ:
これを実行すると変更イベントが発生し、正常に動作します。新しい設定文字列をコンソールに出力しました。
それらが同期的に呼び出されていると確信していますか? console.log('changed')
の最後に追加し、コンソールが読み取るたび.on(change)
にconsole.log('saved')
直後に追加しました:currentUser.save()
saved
changed
今のところ、JSON を厳密に保存し、保存する前に直接設定に保存して、正常に動作するようにしました。