2015-12-02 137 views
0

有条件信任的html我有一个HTML片段如下:从角范围变量

<span id="notification"> {{ message }} </span> 

为了绑定到HTML,我需要做到以下几点:

<span id="notification" ng-bind-html="message"></span> 

理想情况下,我想能够设置一个标志信任$ scope.message为html ...所以我的选择是使用ng-if重复代码,但这不是理想的,因为我希望这两个消息元素具有相同的id 。我也在考虑利用ng-attr,但不相信这会起作用。

有没有一种方法可以让我有条件地加上“NG绑定 - HTML”和“NG绑定”,所以评价一个标志,并删除不需要的属性?我是angularjs的新手。

+0

如果'message'不包含任何HTML,它仍然会显示正确使用'NG-结合-html';应该没有理由有条件地来回切换,除非你担心在'message'中有HTML你不想信任,但这将是一个完全独立的问题。 – Claies

+0

我主要担心的是,在应用程序中可能会有一些机会,我们直接显示用户提供的内容(是更大的问题,但我不想让它变得更糟)。如果用户命名为“”,我不希望渲染它。 – user3689167

+0

那么是的,我认为@epelc提供的答案是要走的路。您甚至可以覆盖'$ sanitize'的默认白名单,甚至不必为特定内容设置标志。 – Claies

回答

0

您可以使用$sanitize服务和函数来只返回您的消息或返回包裹在$sanitize中的消息。然后,你可以只使用ng-bind

一个例子

<span id="notification" ng-bind="notificationCtrl.getMessage(message, true)"></span>

在你的控制器

this.getMessage = function(msg, sanitize) { 
    if (sanitize) return $sanitize(msg) 
    return msg 
}