我有一个使用下划线 isEqual 比较两个 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();
}