2015-12-02 3 views
0

У меня есть фрагмент кода HTML следующим образом:условно доверия HTML от угловой переменной области действия

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

Для того, чтобы связать с HTML, мне нужно сделать следующее:

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

В идеале, я хочу чтобы установить флаг, чтобы доверять $ scope.message как html ... Поэтому мои параметры - использовать ng-if с дублирующимся кодом, но это не идеально, потому что я хотел бы, чтобы это было одинаковым идентификатором для обоих элементов сообщения , Я также изучал возможность использования ng-attr, но не верю, что это сработает.

Есть ли способ, которым я могу условно добавить «ng-bind-html» и «ng-bind», чтобы оценить флаг и удалить нежелательный атрибут? Я новичок в angularjs.

+0

если 'message' не содержит каких-либо HTML, он все равно будет отображаться правильно, используя' ng- связывать-html'; не должно быть причин для условного переключения взад и вперед, если только вас не беспокоит, что в «сообщении» есть 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 
} 
Смежные вопросы