我有一个使用 RequireJS 和 Angular 设置的网站,但在看似随机的时刻,它会决定要么不加载部分 Javascript,要么不加载 Angular 代码的数据绑定(bind)部分。
相关页面上有几个不同的组件,它们有自己的 Angular Controller 。大约 90% 的时间里一切都加载得很好,但有时会发生一些阻止数据绑定(bind)的事情(尖括号可见,ng-hide 不起作用,...)。此外,Chrome 开发工具中的“网络”选项卡显示没有正在加载的文件,尽管它们列在“源”中。我不知道这是否相关。我在控制台中根本没有收到任何错误。
在 JS 控制台中进行挖掘,我发现确实存在一个有问题的损坏 Controller ( = 我使用 angular.element(...).scope()
获得一个对象)但是当我尝试访问其属性之一时,它们要么是未定义的,要么是我在所有 Controller 中使用的 init() 函数,它返回父 Controller 的函数。
什么可能导致 Controller 被加载但其范围变量在看似随机的时间未定义?
编辑: 我发现重现此问题而不在控制台中显示错误的唯一方法是将 Controller 初始化为空函数。这会在控制台中产生类似的作用域行为,但不会导致显示 Angular 花括号。我会接受任何引导我找到问题原因或可行解决方法的线索。
最佳答案
似乎 RequireJS 有时加载所有内容的速度足够快,以便在 DOM 完全加载之前执行 angular.bootstrap 调用。这导致对已加载的内容进行 Angular 处理并忽略接下来的内容。因此我添加了一个 domReady对设置的要求,所以当我知道整个页面都会在那里时,我只引导 Angular 。由于很难确定,我只能希望这是原因,并且我们不会再次看到这个问题。
关于javascript - Angular Controller 偶尔不加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28897315/