Angular 控制器偶尔不加载

Angular controller sporadically not loading

我有一个使用 RequireJS 和 Angular 设置的网站,但在看似随机的时刻,它会决定不加载 Javascript 的一部分或不对 [=26] 的数据绑定部分=]代码。

相关页面有几个不同的组件,它们有自己的 angular 控制器。大约 90% 的时间一切都加载正常,但有时会发生阻止数据绑定的事情(angular 括号可见,ng-hide 不工作,...)。此外,Chrome devtools 中的 'network' 选项卡显示没有正在加载的文件,尽管它们列在 'sources' 中。我不知道这是否相关。我在控制台中完全没有错误。

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

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

编辑: 我发现重现此问题而不在控制台中显示错误的唯一方法是将控制器初始化为空函数。这会在控制台中产生类似的作用域行为,但不会导致显示 angular 大括号。我会接受任何线索,让我找到问题的原因或可行的解决方法。

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

您可能必须使用 AngularAMD。非常适合我们的 angular 网站。