AngularJs只渲染<br/>

时间:2015-09-04 15:09:40

标签: javascript html angularjs html5 xss

我有一个场景。我为用户提供了一个评论框,他们可以使用以下新行添加评论:

This is my comment.
Part of comment in new line

我在数据库中保存为:

model.Description = model.Comment.Replace("\n", "<br />");
//Insert into DB

现在,在AngularJs View上显示它时,它显示的内容如下:

This is my comment. <br /> Part of comment in new line

**我的HTML:**

<style>
    .angular-with-newlines {
        white-space: pre;
    }
</style>

<div class="ads-details-info col-md-8 angular-with-newlines">
    {{comment}}
</div>

输出:

123123123123 \n 123123123123 <br /> 123123123123 \\n 

我想将<br />渲染为新行。我知道有一些解决方案可供选择:trustAsHtmlng-bind-html。但后来它变得容易受XSS攻击。我不想要的。我想只允许一些选定的标签。有没有解决方案?

我见过Preserve line breaks in angularjs。但解决方案对我不起作用。我不希望评论被渲染为代码和white-space:pre;不适合我。

1 个答案:

答案 0 :(得分:-1)

像这样使用ng-bind-html,然后<br/>将呈现为html表达式

<div ng-bind-html="expression" ></div>