Как я могу сохранить новые строки в частичной части AngularJS?

В части, ограниченной AngularJS, я перебираю список записей следующим образом:

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

В содержании {{entry.content}} есть некоторые строки, которые игнорируются AngularJS. Как я могу заставить его сохранить разрывы строк?

Ответ 1

Это просто базовый 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']);

Ответ 2

Я делаю фильтры

// 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>

Ответ 3

Я исправлю это, добавив pre-line:

<style>
    pre{
        white-space: pre-line;
    }
</style>
My data:
 <pre>{{feedback.Content}}<pre>

Ответ 4

// 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>