11

该应用程序的一部分从需要显示为实时 HTML 的服务器获取 HTML。使用指令很容易做到这一点ng-bind-html-unsafe="expression"(至少在 Angular 1.0.2 中)。

但是,HTML 也有应该运行的 JavaScript,因为它定义了 HTML 中使用的函数,而使用指令似乎不会发生这种情况。

有一些 Angular 风格的方法可以做到这一点吗?还是我需要探索带外脚本加载技术?

(请不要讨论我是否应该足够信任服务器来运行它发送给我的 java-script。我确实信任服务器,我知道风险,这是一个非常专业的情况。)

4

2 回答 2

9

我可以提出我的变体。首先你应该创建指令:

app.directive('html', [ function () {
  return {
    restrict: 'A',
    link: function (scope, element, attrs) {
      element.html(attrs.html);
    }
  }
}]);

然后你可以在标签内使用它。

<div html="{{code}}"></div>
于 2014-08-21T16:50:59.047 回答
7

你需要 jQuery(在 Angular 之前加载它):

“我们研究了 jqlite 中支持的脚本标签,但是要获得跨浏览器支持需要做很多黑魔法。出于这个原因,我们决定现在我们只建议用户使用 jquery 和在这种特殊情况下是角度的” ——https://groups.google.com/d/msg/angular/H4haaMePJU0/5seG803by5kJ

另请参阅AngularJS:如何在 ng-include 中制作角度加载脚本?

于 2012-12-30T04:45:57.570 回答