角度控制器偶尔不加载

时间:2015-03-06 10:57:23

标签: javascript angularjs requirejs angularjs-scope

我有一个使用RequireJS和Angular建立的网站,但在看似随机的时刻,它将决定不加载部分Javascript或不加载角度代码的部分数据。

有问题的页面上有几个不同的组件,带有自己的角度控制器。一切都在90%的时间内都很好地加载,但有时候会发生阻止数据绑定的事情(角括号可见,ng-hide不工作,......)。此外,'网络' Chrome devtools中的标签显示没有加载任何文件,但它们列在“来源”中。我不知道这是否与某种方式相关。我根本没有在控制台中出错。

在JS控制台中挖掘我发现其中一个破坏的控制器确实存在(=我使用angular.element(...).scope()得到一个对象)但是当我尝试访问其中一个属性时,他们要么是未定义的,要么在我在所有控制器中使用的init()函数的情况下,它返回父控制器的功能。

什么可能导致控制器被加载但其范围变量在看似随机的时间未定义?

编辑: 我发现重复此问题而没有错误出现在控制台中的唯一方法是将控制器初始化为空函数。这会在控制台中产生类似的范围行为,但它不会导致出现角度花括号。我将接受任何导致我找到问题原因的线索或可行的解决方法。

2 个答案:

答案 0 :(得分:2)

似乎RequireJS有时加载足够快,以便在DOM完全加载之前执行angular.bootstrap调用。这导致角度处理已经加载的内容并忽略接下来发生的任何事情。因此,我在设置中添加了domReady要求,因此当我知道整个页面将存在时,我只引导角度。由于很难确定,我只能希望这是原因,我们再也不会看到这个问题了。

答案 1 :(得分:1)

您可能必须使用AngularAMD。适用于我们有棱角的网站。