使用应运行的脚本插入HTML

时间:2012-12-04 20:54:56

标签: html angularjs

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

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

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

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

2 个答案:

答案 0 :(得分:9)

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

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

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

<div html="{{code}}"></div>

答案 1 :(得分:7)

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

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

另见AngularJS: How to make angular load script inside ng-include?