一尘不染

AngularJS:如何在ng-include内制作角度加载脚本?

angularjs

嘿,我正在建立一个有角度的网页。问题是已经有一些东西没有角度了,我也必须包括它们

问题是这样的。

我的main.html中有这样的内容:

<ngInclude src="partial.html">
</ngInclude>

我的partial.html有这样的东西

<h2> heading 1 <h2>
<script type="text/javascript" src="static/js/partial.js">
</script>

我的partial.js与angularjs无关。nginclude工作正常,我可以看到html,但根本看不到正在加载的javascript文件。我知道如何使用firebug
/ chrome-dev-tool,但是我什至看不到正在发出的网络请求。我究竟做错了什么?

我知道angular对脚本标签有一些特殊的含义。我可以覆盖它吗?


阅读 254

收藏
2020-07-04

共1个答案

一尘不染

从1.2.0-rc1
+(Github问题)开始,可接受的答案将不起作用。

这是由endorama创建的快速修复:

/*global angular */
(function (ng) {
  'use strict';

  var app = ng.module('ngLoadScript', []);

  app.directive('script', function() {
    return {
      restrict: 'E',
      scope: false,
      link: function(scope, elem, attr) {
        if (attr.type === 'text/javascript-lazy') {
          var code = elem.text();
          var f = new Function(code);
          f();
        }
      }
    };
  });

}(angular));

只需添加此文件,将ngLoadScript模块作为应用程序依赖项加载,并type="text/javascript- lazy"作为脚本的类型即可将其延迟加载到局部中:

<script type="text/javascript-lazy">
  console.log("It works!");
</script>
2020-07-04