У меня есть элемент, к которому я хотел бы привязать html.
<div ng-bind-html="details" upper></div>
Это работает. Теперь вместе с ним у меня есть директива, привязанная к привязанному html:
$scope.details = 'Success! <a href="#/details/12" upper>details</a>'
Но директива upper
с div и якорем не оценивает. Как заставить его работать?
angularjs
angularjs-directive
Амитава
источник
источник
Ответы:
Я также столкнулся с этой проблемой, и после нескольких часов поиска в Интернете я прочитал комментарий @ Chandermani, который оказался решением. Вам нужно вызвать директиву compile с этим шаблоном:
HTML:
JS:
Вы можете увидеть рабочую скрипку здесь
источник
function(scope, element, attrs)
, откуда вы взяли эти три аргумента: область видимости , элемент и атрибуты ?link
свойства. Они будут передаваться автоматически каждый раз, когдаlink
вызывается фреймворком Angular. Они всегда будут доступны.$sce.trustAsHtml
другую функцию для создания HTML, который будет «скомпилирован» с помощью этой директивы, вам следует удалить его. Спасибо @apoplexyСпасибо за отличный ответ vkammerer. Одна оптимизация, которую я бы порекомендовал, - это не смотреть после того, как компиляция выполняется один раз. $ Eval в выражении watch может повлиять на производительность.
Вот раздвоенная и обновленная скрипка.
источник
.directive()
код в коде, опубликованном в ответе, нет.$eval
- вы можете просто использоватьattrs.compile
непосредственно вместо наблюдаемой анонимной функции. Если вы просто предоставите строковое выражение, angular все$eval
равно вызовет его.Добавьте эту директиву angular-bind-html-compile
Используйте это так:
Действительно просто :)
источник
К сожалению, у меня недостаточно репутации для комментариев.
Я не мог заставить это работать целую вечность. Я изменил свой
ng-bind-html
код, чтобы использовать эту настраиваемую директиву, но мне не удалось удалить то,$scope.html = $sce.trustAsHtml($scope.html)
что требовалось для работы ng-bind-html. Как только я удалил это, функция компиляции начала работать.источник
Для тех, кто имеет дело с уже просмотренным контентом,
$sce.trustAsHtml
вот что мне пришлось сделать по-другому.Это только
link
часть директивы, поскольку я использую другой макет. Вам нужно будет ввести$sce
службу, а также$compile
.источник
Лучшее решение из того, что я нашел! Я скопировал его, и он работает именно так, как мне нужно. Спасибо, спасибо, спасибо ...
в функции директивы ссылки у меня есть
и в шаблоне директивы:
источник