バックボーン ローカル ストレージを使用していて、奇妙な動作が発生しています。
定義、インスタンス化、およびフェッチされたモデルとコレクションがあります。
MyModel = Backbone.Model.extend({
localStorage: new LocalStore('example-myModels')
//note: LocalStore = Backbone.LocalStore -> https://github.com/jeromegn/Backbone.localStorage
});
MyCollection = Backbone.Collection.extend({
model : MyModel,
localStorage: new LocalStore('example-myModels')
});
var myCollection = new MyCollection();
myCollection.fetch(...);
このコレクションは、リストとしてユーザーに表示されます。ユーザーはコレクションにアイテムを「追加」することができ、最終的に次のコードになります。
var newModel = new MyModel();
newModel.save(newModelAttributes, {
success: function(newlySavedModel) {
myCollection.add(newlySavedModel);
}
);
この時点で、myCollection に新しく追加されたモデルがあり、localStorage データベースにレコードが正常に作成されていることがわかります。
LocalStorage の事前保存:
保存後の LocalStorage:
ユーザーがレコードを追加した後の次のステップは、リストに戻ることです。この時点で、コレクションが再度フェッチされます。
myCollection.fetch();
これで、 myCollectionには新しいレコードが含まれなくなりました。何回フェッチしても、新しいレコードは取得されません - localStorage データベースで確認できますが。Collection の新しいインスタンスを作成してフェッチしようとしましたが、同じ結果が得られます。ブラウザをリロードすると、期待どおりに新しいレコードが表示されます。何が起こっているのか誰にも分かりますか?ここで根本的な何かが欠けているような気がします...
問題を再現する実行例は、http: //jsbin.com/iyorax/2/editから入手できます (コンソールが表示されていることを確認し、[Run with JS] をクリックします)。
前もって感謝します!