59

在 AngularJS 部分中,我正在遍历条目列表,如下所示:

<ul class="entries">
    <li ng-repeat="entry in entries">
        <strong>{{ entry.title }}</strong>
        <p>{{ entry.content }}</p>
    </li>
</ul>

的内容{{entry.content}}有一些被 AngularJS 忽略的换行符。我怎样才能让它保留换行符?

4

4 回答 4

104

它只是基本的 HTML。AngularJS 不会对此做出任何改变。您可以改用pre标签:

<pre>{{ entry.content }}</pre>

或者使用 CSS:

p .content {white-space: pre}

...

<p class='content'>{{ entry.content }}</p>

如果entry.content包含 HTML 代码,您可以使用ng-bind-html

<p ng-bind-html="entry.content"></p>

不要忘记包括ngSanitize

var myModule = angular.module('myModule', ['ngSanitize']);
于 2013-03-16T12:56:45.357 回答
35

我做过滤器

// filters js
myApp.filter("nl2br", function($filter) {
 return function(data) {
   if (!data) return data;
   return data.replace(/\n\r?/g, '<br />');
 };
});

然后

// view
<div ng-bind-html="article.description | nl2br"></div>
于 2013-11-17T17:10:31.333 回答
12

我通过添加来修复它pre-line

<style>
    pre{
        white-space: pre-line;
    }
</style>
My data:
 <pre>{{feedback.Content}}<pre>
于 2015-02-25T09:36:06.727 回答
12
// AngularJS filter
angular.module('app').filter('newline', function($sce) {
    return function(text) {
        text = text.replace(/\n/g, '<br />');
        return $sce.trustAsHtml(text);
    }
});

// HTML
<span ng-bind-html="someText | newline"></span>
于 2015-06-30T16:46:24.443 回答