Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

angularjs newline filter with no other html

I'm trying to convert newline characters (\n) to html br's.
As per this discussion in the Google Group, here's what I've got:

myApp.filter('newlines', function () {     return function(text) {         return text.replace(/\n/g, '<br/>');     } }); 

The discussion there also advises to use the following in the view:

{{ dataFromModel | newline | html }} 

This seems to be using the old html filter, whereas now we're supposed to use the ng-bind-html attribute.


Regardless, this poses a problem: I don't want any HTML from the original string (dataFromModel) to be rendered as HTML; only the br's.

For example, given the following string:

While 7 > 5
I still don't want html & stuff in here...

I'd want it to output:

While 7 &gt; 5<br>I still don't want html &amp; stuff in here... 

Is there any way to accomplish this?

like image 858
MegaHit Avatar asked Dec 20 '12 03:12

MegaHit


People also ask

How to use filters in AngularJS?

As you can see, a filter is simply a function which will do stuff. To use the filter, open your HTML file where you previously had { {myHtmlText}} and replace it with: This will use the filter on our variable and display the result. As we now know how AngularJS Filters work, let’s come back to our initial problem.

Do we work with larger data in angular?

We mostly do work with the larger data. There are always some requirements to filter the array of objects based on search criteria or filter the whole array of objects based on a given input. Angular does provide some classic feature to make reusable code which can work throughout the application.

How to display newline characters without any HTML tags?

A filter is kinda useless... Just inject some HTML and use the ng-bind-html directive. The question is incorrectly marked as an exact duplicate of an existing question. By using the CSS white-space property, you can display newline characters without adding any HTML tags. <p>, <br/> or <pre>

Is it possible to make reusable code in angular?

Angular does provide some classic feature to make reusable code which can work throughout the application. Let’s discuss on how to apply filter for *ngFor loop Let’s understand what is a pipe in Angular?


1 Answers

Maybe you can achieve this only with html, a <preformated text> way ? It will avoid from using filters or do any kind of processing.

All you have to do is display the text within an element that has this CSS:

<p style="white-space: pre;">{{ MyMultiLineText}}</p> 

This will parse and display \n as new lines. Works great for me.

Here, a jsFiddle example.

like image 101
Devin Spikowski Avatar answered Sep 24 '22 00:09

Devin Spikowski