【问题标题】:Angular js - require js file from view using lazy loadAngular js - 使用延迟加载从视图中需要 js 文件
【发布时间】:2014-05-12 13:57:49
【问题描述】:

如何在延迟加载中包含多个 js 文件,以便在页面完成加载并执行 angular 时?

我尝试使用自定义指令,代码如下所示: //html

<ng-lazy-load data-type="script" data-src='["file.js"]'></ng-lazy-load>

//指令

.directive('ngLazyLoad', [function () {
    return {
      restrict: 'E',
      templateUrl:'views/modules/module_lazy_load.html',
      scope:true,
      link: function ($scope, element, attr) {
        if(attr.type === 'script'){
          $scope.src = JSON.parse(attr.src);
        }

      }
    };
  }]);

//方向视图

<script ng-if="src" ng-repeat="path in src" src="{{path}}"></script>

//要包含在延迟加载中的file.js

alert('daf***');

【问题讨论】:

  • 答案是否定的。如果它在模板中甚至不会运行它。
  • @mpm 所以没办法有条件地从模板调用 js 文件吧?
  • 总有一种方式,毕竟它只是 javascript。问题是,这样做是否有意义。但是您仍然可以在纯 javascript 中将脚本附加到 body 元素。

标签: javascript angularjs lazy-loading require


【解决方案1】:

我不这么认为,因为脚本是在 Angular 接管之前加载的。

一个可以检查你的东西然后你可以 $document.write 脚本到 index.html 的指令怎么样?

将负责范围变量的控制器注入到指令中,然后它可以有条件地写入html。

【讨论】:

  • 我们有一些肮脏讨厌的代码在一个令人作呕的 JS 文件中执行此操作,但如果它包含在指令中,那为什么不呢 - 因为它本地化到一个区域和范围。
  • 当然我同意只是等待更多人回答或评论,以便我们可以获得更多反馈
  • 稍后我会尝试使用指令,因为我喜欢这种方法,如果它有效并且没有最佳选择,我会告诉你谢谢:)
【解决方案2】:

不。这是一个暂时不一致的想法:在解析 DOM 时遇到脚本标记时会执行它。以后“关掉它”甚至意味着什么?到那时它已经被执行了。

【讨论】:

  • 如果您在页面准备就绪时创建一个新的 DOM 元素,我猜如果它的
猜你喜欢
  • 1970-01-01
  • 2019-01-01
  • 2017-03-21
  • 2017-11-28
  • 1970-01-01
  • 2012-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多