使用应运行的脚本插入HTML

eni*_*ent 11 html angularjs

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

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

是否有一些Angular风格的方法呢?或者我是否需要探索带外脚本加载技术?

(请不要讨论我是否应该信任服务器足以运行它发送给我的java脚本.我相信服务器,我知道风险,这是一个非常专业的情况.)

pli*_*kou 9

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

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

然后你可以在标签里面使用它.

<div html="{{code}}"></div>
Run Code Online (Sandbox Code Playgroud)

  • 使用类似于此的基于指令的解决方案对我有用 (2认同)

Mar*_*cok 7

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

"我们研究了jqlite中的支持脚本标签,但是需要做些什么来获得跨浏览器支持涉及很多黑魔法.因此我们决定现在我们只是建议用户使用jquery和在这种特殊情况下的角度" - https://groups.google.com/d/msg/angular/H4haaMePJU0/5seG803by5kJ

另请参见AngularJS:如何在ng-include中创建角度加载脚本?