2016-07-29 2 views
0

Я работаю над тяжелым набором данных.Угловая шаблонная переменная заменяет разметку на лету

так я помещаю вложенную переменную внутри таблицы

{{entry.text}} 

, но это может иметь несколько имен, как

Clare Баттерфилд/п/г Барри Бертон

- действительно хочу для замены возвратов каретки меткой br

поэтому каждое название переходит на другую строку

{{(entry.text).replace("/n", "<br>")}} 
+0

Можете ли вы разместить свои данные? – ksav

ответ

0

Вам понадобятся две части, чтобы закончить это:

1) Фильтр, который будет принимать в тексте и заменить /n с <br/> и

2) Директива нг-связывания-HTML чтобы получить угловые использовать эту <br/> вместо того, чтобы просто отображать Clare Butterfield <br/> Barry Burton

в конце концов, ваш HTML будет выглядеть примерно так:

<span ng-bind-html="::entry.text | newLineFilter"/> 

Для примера подобного фильтра с тем, что вам нужно, это увидеть SO вопрос здесь: Angular filter to replace all underscores to spaces

Для директивы ngBindHTML смотрите здесь: https://docs.angularjs.org/api/ng/directive/ngBindHtml

вопросы?

p.s. поскольку ваш набор данных большой, вы можете заметить, что я добавил 2 двоеточия в примере выше, чтобы указать, что он использует одноразовую привязку. Это позволит избежать углового пересчета значения слишком часто и сэкономить на производительности. Это не обязательно, поэтому, если вы обнаружите, что ваш текст не обновляется, когда вы ожидаете этого, просто удалите их.

+0

App.filter ('underscoreless', function() { Функция возврата (ввод) { return input.replace (/ _/g, ''); }; }); --- мы помещаем это в контроллер? –

+0

Нет, он будет отдельным контроллером, но зарегистрирован аналогичным образом. Например, вы бы зарегистрировали контроллер, такой как 'App.controller '(' MyController ', function() {...'. 'App' будет называться чем-то еще в вашем коде. – HankScorpio

+0

Есть еще один пример создания фильтра внизу этой страницы: http://www.w3schools.com/angular/angular_filters.asp – HankScorpio

Смежные вопросы