Перенос слов с помощью ng-bind-html

0

Я использую AngularJS для создания приложения для управления заметками. Во время этого, я столкнулся с несколькими проблемами, где я могу выбрать свою ошибку: должен ли я иметь приложение, которое не может переносить слово или тот, который не может ощутить ключ возврата.

Сначала мое приложение не воспринимало бы ключ возврата или дополнительные пробелы, поэтому в моей директиве примечания я заменил: <p>{{note.body}}</p> на: <p ng-bind-html="note.body | format"></p>


Хотя он исправил проблему с помощью клавиши ввода, но это не приведет к переносу слов:

Изображение 174551

Используя ng-bind-html, автоматическая перенос слов завершается неудачно - что было бы ужасно для моего приложения, так как я хочу, чтобы он был чрезвычайно гибким, когда дело доходило до изменения размера.

Как исправить эту ошибку?

Здесь мой формат фильтра: angular.module('NoteWrangler').filter('format', function(){ return function(input) { if(!input) return input; var output = input//replace possible line breaks..replace(/(\r\n|\r|\n)/g, '<br/>')//replace tabs.replace(/\t/g, '&nbsp;&nbsp;&nbsp;')//replace spaces..replace(//g, '&nbsp;'); return output; }; });

Примечание Директива:

'''<div class="container note note-full">
    <h2>{{note.title}}</h2>
    <p ng-bind-html="note.body | format"></p>
    <p class="text-muted date">Posted on {{note.timestamp | date}}</p>
</div>'''

Если использовать тег, это единственный способ решить эту проблему, тогда я это сделаю - после того, как сделаю фон, границу и т.д. Невидимыми с некоторыми CSS.

Теги:
ng-bind-html

2 ответа

2
Лучший ответ

Добавьте этот класс css в свой <p> или любой другой тег, который вы хотите использовать:

.text-pre-wrap{
    white-space: pre-wrap !important;
}

Кроме того, вам нужен только этот фильтр

angular.module('NoteWrangler').filter('format', function () {
  return function (input) {
    if (input) {
      return input.replace(/\n/g, "<br />");
    }
  };
});
  • 0
    @MathManiac пометьте его как принятый, если он решит вашу проблему :)
  • 0
    Просто любопытно: не мог ли я сделать [ng-bind-html] { ... } в своей таблице стилей, чтобы исправить все для каждого тега, или это было бы плохой практикой по какой-то причине?
Показать ещё 1 комментарий
0

Добавление свойства

.text-pre-wrap{
    white-space: pre-wrap !important;
}

не было достаточно для меня.

Мне также необходимо было добавить:

.text-pre-wrap{
    white-space: pre-wrap !important;
    overflow-wrap: break-word;
}

И в html:

<div ng-bind-html="notes.html" class="text-pre-wrap"></div>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню