Вставьте 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>