没有其他html的angularjs换行符过滤器?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (137)

我试图将换行符(\n)转换为html br。 根据Google小组的讨论,以下是我所得到的结果:

myApp.filter('newlines', function () {
    return function(text) {
        return text.replace(/\n/g, '<br/>');
    }
});

那里的讨论还建议在视图中使用以下内容:

{{ dataFromModel | newline | html }}

这似乎是使用旧的html过滤器,而现在我们应该使用该ng-bind-html属性。

无论如何,这都会造成一个问题:我不希望任何原始字符串(dataFromModel)中的HTML被呈现为HTML; 只有br的。

例如,给定以下字符串:

虽然7> 5 我仍然不希望HTML&东西在这里...

我想要它输出:

While 7 &gt; 5<br>I still don't want html &amp; stuff in here...

有什么办法可以做到这一点?

提问于
用户回答回答于

我决定只使用两个过滤器,而不是干扰新的指令:

App.filter('newlines', function () {
    return function(text) {
        return text.replace(/\n/g, '<br/>');
    }
})
.filter('noHTML', function () {
    return function(text) {
        return text
                .replace(/&/g, '&amp;')
                .replace(/>/g, '&gt;')
                .replace(/</g, '&lt;');
    }
});

然后,在我看来,我把其中一个放到另一个:

<span ng-bind-html-unsafe="dataFromModel | noHTML | newlines"></span>
用户回答回答于

也许你可以用html来实现这一点,一种<preformated text>方式,它将避免使用过滤器或进行任何类型的处理。

你所要做的就是在具有这个CSS的元素中显示文本:

<p style="white-space: pre;">{{ MyMultiLineText}}</p>

扫码关注云+社区

领取腾讯云代金券