私は、バックボーンコレクションモデルを切り替えるときに(テーブル行をクリックして)保存されていない変更についてユーザーに「押しつける」必要があります。私は "バックボーンモデルの汚れたデータをチェック"(例えば)のためのグーグルで、何か決定的なものは見つけられませんでした。 コレクション内の汚れたバックボーンモデルデータを確認する
私はこの次のような方法で、 underscore's "some"と isEqual functionalityを用いて達成する、「いくつかの()」(これらの正確な変更が何であるかとは対照的に) 任意未保存の変更があるかどうかを決定するのに十分です特にモデル属性が実際にはオブジェクトの配列であるためです。var anyDirty = _.some(myCollection.models, function(model) {
return !_.isEqual(model.get('nodes'), model.previousAttributes()['nodes]);
});
私はバックボーンに新しいですし、これは汚れたモデルデータをチェックするアドホックのためのアプローチの受け入れられた一種である場合は疑問に思って。あるいは、バックボーンは、この目的のために何らかの組み込みの機能を提供しているのですか?私の最初の試みはグーグルでは明らかにしていませんでしたか?
何についてhttp://stackoverflow.com/questions/9215036/backbone-js-is-there-a-change-since-last-server-save? – nikoshr
それを指摘してくれてありがとう。今私は十分に私の質問を書いていないことを認識しています。特定のコレクションの*モデルが変更されたかどうかを知りたいと思います。この場合、私の_ _omeの使用はまだ関係しているようですが、イテレータの内部では、_.isEqual()の代わりに 'model.hasChanged()'を使用できます。 –
代わりに、 'change'イベントが発生したとき。あなたのコレクションの状態としてそれを維持してください。コレクションがサーバーに再び同期したら、それをクリアします。その後、その状態属性からチェックします。私は 'change'も新しいモデルを作成するときに発生するので、' isNew() 'もチェックしたいと思うかもしれません。 – j03w