【问题标题】:Include javascript external file if allowed in AngularJS如果 AngularJS 允许,包括 javascript 外部文件
【发布时间】:2016-09-12 15:51:01
【问题描述】:

我需要为我的html页面定义只有当变量$scope.jsallowed设置为true时才加载javascript外部文件,所以我尝试了这段代码:(我的页面基于AngularJS) 在 html 中:

<script src="assets/js/slider.min.js" data-ng-if="jsallowed"></script>

在 JS 中:

$scope.jsallowed = false;

(请注意,我设置了应用程序和控制器......但我只是在此处包含了您需要的代码。) 但问题是,我的 javascript 文件尚未加载。虽然它不应该。在将 jsallowed 变量设置为 true 之前,如何改进我的代码以防止加载它?

【问题讨论】:

标签: javascript html angularjs


【解决方案1】:

不幸的是,data-ng-if="jsallowed" 无法满足您的要求。相反,您可以做的是直接在 JavaScript 文件中异步加载脚本,如下所示:

<script>
var resource = document.createElement('script'); 
resource.src = "assets/js/slider.min.js";
var script = document.getElementsByTagName('script')[0];
script.parentNode.insertBefore(resource, script);
</script>

【讨论】:

  • 如何将这段代码包装在指令中,在那里做一些魔术?为什么不赞成,只是好奇,因为没有建议的角度方式?我们可以在这里播放$injector 来动态添加东西吗?
  • @user3198882,没有 Angular 方法可以做到这一点。不知道你为什么不赞成我的建议,但我可以保证这是可行的,而且这种语法很常见。此外,这也是谷歌在导入其分析库时所建议的。当然,您可以将其包装在 Angular 指令中,我只是突出显示了您需要运行的 JavaScript 代码。
  • 投反对票的不是我,我只是问为什么有人这样做,我仍然很感兴趣:)
  • 非常感谢,我在非 angularjs 页面中尝试了这个,效果很好,我想知道,纯 javascript 代码是否也可以在基于 angularjs 的页面中工作?更新:我在我的 AngularJS 页面中尝试过,效果很好!
  • 没错,Angular 是一个 JavaScript 框架,这意味着您可以在任何 Angular 项目中使用纯 JavaScript 代码。 Angular 只是添加/扩展原生 JavaScript 功能,以事半功倍。
猜你喜欢
  • 2018-10-14
  • 2013-11-29
  • 1970-01-01
  • 2011-05-24
  • 1970-01-01
  • 2019-08-09
  • 2014-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多