javascript - 替换不是替换文本

标签 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} }"

因此,如果我可以删除那些添加的文本,那么比较就会起作用。 替换不起作用。我仍在获取原始文本。

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 - 替换不是替换文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55802879/

相关文章:

javascript - Java访问浏览器本地存储

javascript - ':'(冒号)在 JavaScript 中有什么作用?

javascript - 通过ajax发送blob数据

javascript - 如何获取范围 slider 的值?

c# - 在 asp.net 3.5 中使用 RegisterClientScriptBlock/RegisterStartupScript

javascript - 如何展平对象的嵌套嵌套数组

javascript - 绕过 blob 500mb 限制以在磁盘上保存更大的文件

javascript - 单击 html 中的链接不会将我重新路由到正确的页面

javascript - 可以像 Google+ 按钮一样使用 Javascript 显式呈现推文按钮吗?

javascript - AngularJs 动态下载响应