ngTransclude打破了自定义指令中的HTML内容呈现,即使使用$ sce.trustAsHtml()过滤器也是如此

时间:2015-11-02 20:17:40

标签: angularjs angularjs-directive angularjs-ng-transclude

我无法在我的自定义指令中正确呈现已转换的内容。

以下是示例:

http://plnkr.co/edit/mvx5GuMrPcUPJbrOCKbD

来自外部来源的内容包含换行符(\n),我想使用过滤器将换行符替换为<br> HTML标记。

app.filter('newline2br_trust', ['$sce',
    function($sce) {
        return function(input) {
          return input ? $sce.trustAsHtml(input.replace(/\n/g, '\n<br/>')) : '';
        };
    }
]);

如果我在单个元素上使用ng-bind-html,这似乎可以正常工作,但如果我有一个带有transcluded内容的自定义指令,它似乎忽略$ sce.trustAsHtml(),并转义HTML内容:

<multiline>{{ example.data1 | newline2br_trust }}</multiline>

如何让我的指令正确转换此HTML内容?

注意:似乎是使用AngularJS表达式+ ngTransclude的$ sce功能,因为原始/静态HTML内容与transclude一起正常工作:

<multiline>BrLine1<br/>BrLine2<br/>BrLine3</multiline>

0 个答案:

没有答案