我有一个用例,我们可以在字符串中包含'&‘和'>’字符。例如:强生,value > 3
。因此,当来自服务器的响应被编码时,值就变成了'value > 3‘。
ng-bind
不支持以下内容:
将为ngBind
呈现value > 3
,而浏览器呈现与value > 3
相同的内容。
Ng:bind <div ng-bind="model"></div>
Ng:bind-html <div ng-bind-html="model"></div>
<div> From Div: value > </div>
为什么ng-bind
中不存在此默认浏览器行为?我不想使用ng-bind-html
(值为<
有问题,而且它不是html)或ng-bind-unsafe-html
。
我的应用程序有动态键值字段,它们将显示在应用程序的不同部分。因此,与使用ngBind
相比,使用单独的指令或装饰器来显示所有字符串字段需要额外的开销。
问题:
1)有没有其他方法可以在不使用额外指令的情况下执行相同的操作,或者这是处理编码数据的正确方法吗?
2)默认情况下,是否可以覆盖或修饰ng-bind
的行为?
发布于 2013-10-16 22:20:37
ng-bind使用.text()方法替换文本,虽然您的代码包含>
,但ng-bind不能正确呈现它。您应该在此位置使用ng-bind-html,因为您实际上是在输入HTML内容。否则,您可以将>替换为正则表达式为'>‘。
例如:- model = model.replace(/>/g, '>');
但是在这种情况下,您必须替换所有不需要的HTML标记,因为ng-bind-html在您的情况下已经可以很好地工作了。
发布于 2013-10-09 15:56:13
是的,让我们用一个过滤器来“装饰”它:
.filter("decode",function(){
return function(str){
var el = document.createElement("div");
el.innerHTML = str;
str = el.textContent || el.innerText;
return str;
}
});
并像这样使用它:<div ng-bind="model|decode"></div>
发布于 2013-10-14 19:10:10
我记得有一个名为ngBindHtmlUnsafe的指令可用于此类用例。
http://code.angularjs.org/1.0.8/docs/api/ng.directive:ngBindHtmlUnsafe
请参考这个。不确定这在以后的不稳定版本中是否可用。此链接指向可用的最新稳定版本。
https://stackoverflow.com/questions/19264586
复制相似问题