アンダースコア isEqual を使用して 2 つの JSON 文字列を比較する質問があります。現在、私はバックボーンでアプリを作成しており、_.isEqual(savedModel.toJSON(),changedModel.toJSON() ) を使用して、モデルがページで変更されたかどうかを検出し、「変更が保存されていません。救いたい?」ユーザーが移動するのに疲れた場合のダイアログ。
なんらかの理由で、何もしていない、または変更を保存しているにもかかわらず、ランダムな場所にダイアログが表示されます。デバッグは私を夢中にさせています。
これは、JSON が JSON 内のオブジェクトの順序を保証せず、アンダースコア isEqual がこのケースを適切に処理しないためでしょうか? モデルが同じであっても、JSON の一部の属性が異なる可能性があり、false を返しますか?
擬似コード:
//when entering the page the original model is cloned, when user does changes to the
//page, the model is cloned again
var savedModel = currentModel.clone().toJSON();
//when the user tries to navigate away from the page
if( _.isEqual(savedModel, model.toJSON() ){
showSavePromptDialog();
}