2017-10-11 64 views
0

我一直在尝试使用HTML实体,以避免角度作出有约束力的,当明文命中{{}}如何显示与角

所以我发现,浏览器将其转换为纯弯曲的大括号反正双花括号。这里是简单的例子。正如您在DOM检查器中所看到的,HTML实体代码已转换为简单的弯曲大括号。它在某处指定了吗?

https://codepen.io/anon/pen/OxEeqg

<body> 
    &#123;&#123;1+2&#125;&#125; 
</body> 

UPD:Chrome和FF的行为在这种情况下类似。

+0

这是预期的行为。如果你想直接显示你的代码,你必须把'&'变成一个实体:'&#123; &#123; 1 + 2 &#125; &#125;' – tobiv

+0

不,我说的不是显示。 DOM中的HTML本身已被转换。我希望它被显示为弯曲的大括号,但不能被Angular表达式解析器识别。因为我不得不在前两个括号之间插入ZWSP,但我仍然好奇为什么'{'被转换为'{'*在HTML源代码* –

回答

2

使用ng-non-bindable指令的包装元素:

<span ng-non-bindable>{{1+2}}</span> 

如果你使用它的容器元素上,你也可以忽略属性:

<div ng-non-bindable> 
    <input value="{{example}}"> 
</div> 
+0

中。不幸的是,相同的元素具有属性,我确实需要绑定并且它的下降具有它们太。但最重要的是它实际上是XSS,我不想通过列入黑名单来阻止XSS。无论我是否忘记添加'ng-non-bindable',我都希望解决方案能够在任何地方工作。所以我加入了保存到数据库的钩子,并认为它工作正常,直到我发现用HTML实体替换弯曲的大括号不起作用,因为浏览器将它们替换回来。 –