В моем угловом приложении среди данных, которые я извлекаю, есть текст, потенциально содержащий разрывы строк, ссылки и другие материалы, которые мне нужно преобразовать в 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, это так!»