Вставьте HTML-код со сценариями, которые должны запускаться
Одна часть этого приложения возвращает HTML с сервера, который должен отображаться как живой HTML. Это легко сделать с помощью директивы ng-bind-html-unsafe="expression"
(по крайней мере, в Angular 1.0.2).
Однако в HTML также есть JavaScript, который должен запускаться, поскольку он определяет функции, используемые в HTML, и это, похоже, не происходит с помощью директивы.
Есть ли способ Angular -style сделать это? Или мне нужно исследовать методы загрузки вне диапазона script?
(Пожалуйста, не обсуждайте, должен ли я доверять серверу достаточным для запуска java- script, который он отправляет мне. Я доверяю серверу, я знаю о рисках, и это очень специализированная ситуация.)
Ответы
Ответ 1
Вам нужно jQuery (загрузите его до Angular):
"мы рассмотрели поддержку тегов script в jqlite, но то, что нужно сделать для получения кросс-браузерной поддержки, связано с большим количеством черной магии. По этой причине мы решили, что пока мы просто порекомендуем, что пользователи используют jquery вместе с angular в данном конкретном случае" -
https://groups.google.com/d/msg/angular/H4haaMePJU0/5seG803by5kJ
См. также AngularJS: Как сделать angular загрузку script внутри ng-include?
Ответ 2
Я могу предложить свой вариант. Сначала вы должны создать директиву:
app.directive('html', [ function () {
return {
restrict: 'A',
link: function (scope, element, attrs) {
element.html(attrs.html);
}
}
}]);
Затем вы можете использовать его внутри тега.
<div html="{{code}}"></div>