2013-11-03 71 views
0

我有一個看起來像這樣的字符串(大量的空白,這是它只是怎麼弄出來我的服務器上):AngularJS 1.2的ngBindHtml不處理/ R&/ N

var care_description = "MATERIAL\r\n \r\n 56% Acrylic, 24% Rayon, 20% Polyester\r\n \r\n CARE\r\n \r\n Machine Wash, Gentle Or Delicate" 

我「M使用新Angular 1.2.0 ngBindHtml和像這樣處理它在我的控制器:

$scope.care = $sce.trustAsHtml(care_description); 

(該$scope.records[i].accordions陣列僅僅是角引導的手風琴模塊的包裝)。

當我把這個變成我的看法(通過一個簡單的<p ng-bind-html="care"></p>)它被渲染,像這樣:

MATERIAL 56% Acrylic, 24% Rayon, 20% Polyester CARE Machine Wash, Gentle Or Delicate 

當它應該是:

MATERIAL 

56% Acrylic, 24% Rayon, 20% Polyester 

CARE 

Machine Wash, Gentle Or Delicate 

是唯一的解決辦法在這裏對我來說,做一個正則表達式替換找到\r\n的所有實例並將其替換爲<br />

編輯:我應該提到,雖然在上面的例子中,沒有HTML標籤,經常會出現,所以我需要在這裏使用ngBindHtml而非<pre>標籤。

回答

4

所有的ngBindHtml都不是逃生標籤。您在這裏沒有標籤。您可以用<br/>替換全部\r\n。或者你可以寫一個指令來爲你做。或者只是使用<pre>標籤。

2

你有什麼不是HTML,但純文本。所以你不應該使用ng-bind-html和trustAsHtml。只是顯示一個<pre>塊內的值:

<pre>{{ care }}</pre> 
+0

對不起,請編輯上面 - 而在這個例子中,不存在HTML標籤,往往會有一些有,所以我必須使用'ngBindHtml' – Jascination

+1

然後好像就像你有一個設計問題:或者值是HTML,並且換行符也應該是HTML格式,或者它是純文本格式,並且它不應該包含HTML。我會修正這些數據,以及生成這些數據的過程,而不是處理這個不一致的地方。 –

+0

使用'Cheerio'(節點相當於jQuery)從網站上抓取數據,只需抓取一個元素並獲取'.html()'。那麼你會建議在數據收集階段進行一次搜索替換:將'/ r/n'轉換成換行符HTML元素,這樣就可以保持一致? – Jascination