Backbone.jsビューの1つで、を使用して現在のモデル(メッセージのインスタンス)の属性「読み取り」を更新していますthis.model.set( { read: true } );。このコマンドが1回だけ実行されることを確認しました(「ゴーストイベント」について知っています)。以下に示すように、コレクション全体が変数に保存される更新イベントを発生させるようにコレクションを構成しました。残念ながら、saveToVar関数は1回ではなく3回呼び出されます。また、1回目saveToVarはthis、コレクションのすべてのモデルで正しく構成されていますが、2回目と3回目thisは、更新を行ったモデルの1つだけです。私はすべてを少しずつ追跡しましたが、なぜこれが起こるのか分かりません。
window.Message = Backbone.Model.extend({
});
window.MessageCollection = Backbone.Collection.extend({
model: Message,
initialize: function()
{
this.on("change", this.saveToVar);
},
saveToVar: function(e)
{
App.Data.Messages = this.toJSON();
return;
}
});