javascript - 替换不是替换文本
问题描述
我正在尝试检查模型的值是否已更改,以便我可以警告用户他/她有未保存的更改。
modelHasChanged(): boolean {
let search1 = ",\"_$visited\":true";
let search2 = "\"_$visited\":true";
let strModel = JSON.stringify(this.model);
strModel = strModel.replace(/search1/g, "");
strModel = strModel.replace(/search2/g, "");
let o = JSON.stringify(new MyNewObject());
let diff = strModel !== o;
return diff;
}
不幸的是,它总是正确的。当我将鼠标悬停在 上时strModel
,我注意到即使我什么都不做,,"_$visited":true
仍然会为某些属性添加。例如:
o = "{"proprty1": null, "property2": {} }"
strModel = "{"proprty1": null, "property2": {"_$visited":true} }"
因此,如果我可以删除那些添加的文本,那么比较将起作用。Replace
不管用。我仍然得到原文。
strModel = strModel.replace(/search1/g, "");
strModel = strModel.replace(/search2/g, "");
感谢您的帮助
解决方案
您可能需要转义 {、}、_ 等字符。
在 javascript 控制台上尝试以下代码。似乎工作。
let temp = "{\"property1\": null. \"property2\": {} }"
let strModel = "{\"property1\": null, \"property2\": {\"_$visited\":true} }"
strModel = strModel.replace(/\{\"\_\$visited\":true\}/, "{}");
推荐阅读
- javascript - 如何通过 fullcalendar 使用 AJAX 将 boostrap 模式输入插入到 SQL 表中
- mysql - MySQL Master-Master 复制问题
- javascript - 如果变量值为零,为什么变量前的感叹号返回“真”?
- c++ - FFMPEG C++ 音量过滤器
- python - 如何提高python中巨大列表的搜索性能?
- spring-reactor - 为什么 ConnectableFlux.connect() 阻塞?
- javascript - 仅在单个组件上添加脚本 - vuejs
- doxygen - 如何从“相关页面”选项卡中删除多个“自述文件”行?
- java - 如何将firestore中的dateTime存储与当前dateTime进行比较?
- asp.net-core - JWT 令牌未正确验证