#angularjs #ng-bind-html
#angularjs #ng-bind-html
Вопрос:
Мне нужно проанализировать строку с помощью ng-bind-html. Эта строка содержит некоторые пользовательские html-теги. Который при синтаксическом анализе с использованием ng-bind-html выдает ошибку для $sanitize:badparse.
Пожалуйста, посмотрите на скрипку для ошибки: http://jsfiddle.net/8zS4h/2 /
Читая вопросы в stackoverflow и в Google, я обнаружил, что может быть решение, если я использую $sce.trustAsHtml()
.
Это решает мою проблему с ошибкой, но не удалось проанализировать мой пользовательский html-элемент. Вы можете увидеть эту обновленную скрипку здесь: http://jsfiddle.net/8zS4h/3 /
Я изо всех сил ломаю голову, чтобы найти решение.
РЕДАКТИРОВАТЬ: просто чтобы добавить больше информации, я получаю эту строку из rss-канала, поэтому иногда она также может содержать "<http>"
"<http"
теги or . Именно здесь он терпит неудачу. Итак, если строка похожа <http://www.<em>whitehouse</em>.gov/omb/circulars/a076/
на should выдает вывод, подобный http://www.<em>whitehouse</em>.gov/omb/circulars/a076/
Ответ №1:
Что ж, мне удалось без проблем получить рабочие теги, такие как anchor, underline и bold, посмотрите:
angular.module('ngBindHtmlExample', ['ngSanitize'])
.controller('ngBindHtmlCtrl', ['$scope', function ngBindHtmlCtrl($scope) {
$scope.myHTML =
'<a href="http://google.com">link</a> contests <u>of OMB</u> <b>Circular</b> A-76';
}])
.filter('to_trusted', ['$sce', function($sce){
return function(text) {
return $sce.trustAsHtml(text);
};
}]);
похоже, он проанализирован правильно
Комментарии:
1. Это нормально, но что делать, если у меня есть теги типа «<http>» или »
2. это работает нормально, вам просто нужно использовать правильный синтаксис. например. <http></http> все в порядке, но для этого ‘<http’ требуется закрывающий ‘>’ и завершающий элемент
3. Это проблема, мы получаем эту строку из rss-канала и перед вставкой ее в базу данных усекаем строку с первыми 50 символами. Теперь он может иметь закрывающее ‘<‘ или не может. Спасибо за ваш комментарий.