2016-06-17 2 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() do ...

Должен ли он возвращать своего рода строку с кодом, который может быть легко интерпретирован? Или это должно сказать, что угловая «эта строка безопасна, если вы видите ее в атрибуте data-ng-bind-html, это так!»

ответ

3

Правильное использование в ngBindHtml будет:

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

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

  • Нет связанных вопросов^_^