2016-06-17 108 views
2

在我的角度應用程序中,我檢索的數據中,有一些文本可能包含換行符,鏈接和其他需要轉換爲HTML的東西。所以,我實現了這個功能「轉換」的字符串HTML:爲什麼這不顯示HTML

$scope.textToHTML = function(text){ 
    if(!text){return "";} 
    var html = text.replace("\r\n", "<br>")// Windows line break 
     .replace("\n", "<br>")// Carriage Return 
     .replace("\r", "<br>")// Line feed 
     .replace("\t", "<span style=\"margin-left: 20px;\"></span>") 
     .replace("(https?:\\/\\/[^\\s]*)", "<a href=\"$1\" target=\"_blank\">$1</a>"); 

    return $sce.trustAsHtml(html); 
} 

然後,我用它作爲這樣的: <p data-ng-bind-html="">{{textToHTML(company.description)}}</p>

當我刪除data-ng-bind-html時,我看到了代碼(轉義),但使用它,我的<p>總是空的。我閱讀Angular $ sce doc,但我必須缺少一些東西,因爲我還是不太明白trustAs()做什麼...

它應該返回一種可以安全解釋的代碼的字符串嗎? 還是應該說角度「這個字符串是安全的,如果你看到它在data-ng-bind-html屬性中顯示它就好像!」

回答

3

的ngBindHtml的正確用法是:

<p data-ng-bind-html="textToHTML(company.description)"></p>