Угловой фильтр, генерирующий экранированный HTML

Этот фильтр работает с полем, которое загружается из службы REST. Он преобразует символы новой строки в теги <br/>, и они экранируются.

angular.module('myMod').filter('convertBreaks', function($sce) {
    return function(input) {
        return $sce.trustAsHtml(input.replace(/[\n]/g, "<br/>"));
    };
});

Это называется так:

<p>{{data.x.y.z | convertBreaks}}</p>

Теги <br/> выходят экранированными. Любые предложения, почему?

Обновить

Забыл упомянуть, что это выполняется директивой, использующей службу $compile.


person Mike Thomsen    schedule 02.09.2014    source источник


Ответы (1)


Попробуйте использовать ng-bind-html.

<p ng-bind-html="data.x.y.z | convertBreaks"></p>

В Angular есть несколько встроенных механизмов безопасности, которые вызывают подобные махинации.

person Dan Kanze    schedule 02.09.2014
comment
Как мне заставить это работать с директивой, использующей $compile? - person Mike Thomsen; 02.09.2014