【发布时间】:2014-07-20 13:37:23
【问题描述】:
我正在尝试使用 $sce.trustAsHtml 作为过滤器复制 ng-bind-html-unsafe,如给定 here
当我尝试传递如下文本时:
"Code: <?php echo strtotime($user->created_at)*1000; ?>"
它被渲染为:
"Code: created_at)*1000; ?>"
如何渲染整个文本?
更新:
我的代码如下:
HTML:
<p ng-bind-html="message.messagebody | newlines | unsafe"></p>
过滤器:
app.filter('newlines', function () {
return function (text) {
return text.replace(/\n/g, '<br/>');
}
})
app.filter('unsafe', ['$sce',
function ($sce) {
return function (val) {
return $sce.trustAsHtml(val);
}
}
])
我正在使用 ng-bind-html,因此每当输入新行时,它都会转换为“
”标签,并在浏览器中呈现时显示为新行。
【问题讨论】:
-
为什么要使用 trustAsHtml?如果你只是按原样过去会发生什么?
-
<不是有效的 html,请尝试转换为 htmlentities 或创建自己的指令来设置 html,这样它就不会通过$sce运行跨度> -
当用户输入换行符时,需要将其转换为
标签,以便在浏览器中呈现时反映换行符。否则它在同一行。这就是我使用 ng-bind-html 而不是 ng-bind 的原因。 -
老q,你自己解决了吗@Prateek Bhatt?