как проанализировать пользовательский html-элемент с помощью ng-bind-html в angularjs

#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 символами. Теперь он может иметь закрывающее ‘<‘ или не может. Спасибо за ваш комментарий.