Javascript “显示”&;lt";as<;在html中删除双引号

Javascript “显示”&;lt";as<;在html中删除双引号,javascript,html,angularjs,Javascript,Html,Angularjs,我有一些包含数据的json数组,其中一个键的格式如下 x = "&lt;sometext&gt;" 我想将其显示为“” 现在它显示为sometext 我有html格式的 <tr data-ng-repeat ="d in data"> <td>{{d.x}}</td> </tr> 我试过了 {{d.x.replace(/&lt;/, '<').replace(/&gt;/, '>')}} {

我有一些包含数据的json数组,其中一个键的格式如下

x = "&lt;sometext&gt;"
我想将其显示为“

现在它显示为
sometext

我有html格式的

<tr data-ng-repeat ="d in data">
    <td>{{d.x}}</td>
</tr>
我试过了

{{d.x.replace(/&lt;/, '<').replace(/&gt;/, '>')}}
{{d.x.replace(//,'')}
但它所做的只是在html上显示,如下所示

var someStr = 'He said "Hello, my name is Foo"';
console.log(someStr.replace(/['"]+/g, ''));
{{d.x.replace(/</, '<').replace(/>/, '>')}}
{{d.x.replace(//,'>')}

您需要将字符串用另一组双引号括起来,并取消括号。Angular将负责将其显示为文本而不是html:

"{{d.x.replace(/&lt;/, '<').replace(/&gt;/, '>')}}"
“{{d.x.replace(//,'')}”

默认情况下,AngularJS模板表达式不计算HTML。发生这种情况是出于安全原因,因此您应该考虑相关的安全问题(用户可以操纵此变量吗?)

如果您决定评估HTML内容,您可以使用
ngBindHtml

<tr data-ng-repeat ="d in data">
    <td ng-bind-html="d.x"></td>
</tr>


出于安全原因,除stanard AngularJS外,您还需要包括ngSanitize。请参见示例。

如果您希望它显示为
,则需要添加双引号,而不是删除它们。哦,我刚刚尝试过它,但现在它显示“sometext”@nevermind,只是替换为,类似地只引用它们。如何覆盖“错误:[$sce:unsafe]尝试在安全上下文中使用不安全的值。”您可能需要包括ngSanitize才能完成此操作。@无论如何,我更新了我的答案以帮助解决此问题,并添加了一个显示有效解决方案的提琴。我想知道:是否有任何选项允许解析HTML实体,但不允许解析HTML标记?@NiettheDarkAbsol一个快速的方法就是简单地将标记转换为实体,就像这个问题中讨论的那样