2015-12-02 84 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 
}