作为require依赖项的angular如何能在加载成功后延迟执行?

发布于 2022-09-01 16:58:36 字数 1124 浏览 23 评论 0

先看代码:

define(['angular','angular-touch'],function(angular){
    'use strict';
    return angular.module('weather-app',['ngTouch']);
});

用requirejs调用这个模块来获取angularjs定义好的模块,结果发现在 angular.module('weather-app',['ngTouch']) 这句模块定义尚未执行之前,就已经报出出错提示[$injector:modulerr] Failed to instantiate module weather-app due to:……(断点设在'use strict'上断下来的时候就已经有报错了)。

并且发现报错中的 module 名称随 html 文件中的 ng-app 属性值变化,上面js模块代码里的weather-app改为别的值反而没有什么变化。而错误提示的整个堆栈都只涉及到angular.js一个资源文件,其他都是浏览器自带插件的文件。

感觉好像是angular.js下载完成后就兀自先执行了,define回调function主体里的模块定义根本没执行,就开始检查html标签上的angular指令,并且试图初始化ng-app,结果发现ng-app上所指定的名称还没通过angular.module('weather-app',['ngTouch']);这句来定义呢。

这再次确认了:之前曾经遇到的问题是一样的。
当时是加载angular和另外两个自定义模块,一共三个依赖项后,再执行angular.module定义的。
自定义模块人为插入超长无意义字符串之后,因为必须等它加载完成才能定义angular.module(),以至于angular先于此加载完毕,并试图初始化<html>标签上的ng-app而报错。

所以我需要的解决方案,应该可以做到angular.js加载完毕后不会立即执行,而是等angular.module('weather-app',['ngTouch'])命令执行完,才去处理标签上的ng-app。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小耗子 2022-09-08 16:58:36

别在页面上写 ng-app="weather-app", 然后再配合使用angular.bootstrap就OK了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文