【发布时间】:2015-03-06 10:57:23
【问题描述】:
我有一个使用 RequireJS 和 Angular 设置的网站,但在看似随机的时刻,它会决定不加载部分 Javascript 或不绑定部分 Angular 代码。
有问题的页面上有几个不同的组件,它们都有自己的角度控制器。大约 90% 的时间都可以正常加载,但有时会发生阻止数据绑定的事情(尖括号可见,ng-hide 不起作用,...)。此外,Chrome devtools 中的“网络”选项卡显示未加载任何文件,尽管它们已列在“源”中。我不知道这是否相关。我在控制台中完全没有错误。
在 JS 控制台中四处挖掘,我发现有问题的控制器之一确实存在(= 我使用 angular.element(...).scope() 获得了一个对象)但是当我尝试访问它的一个属性时,它们要么未定义,要么对于我在所有控制器中使用的init() 函数,它返回父控制器的函数。
什么可能导致控制器被加载但其范围变量在看似随机的时间未定义?
编辑: 我发现在控制台中不显示错误的情况下重现此问题的唯一方法是将控制器初始化为空函数。这会在控制台中产生类似的作用域行为,但不会导致角花括号出现。我会接受任何能引导我找到问题原因或可行解决方法的线索。
【问题讨论】:
-
我使用 Grunt 连接和缩小所有 JS 文件,但没有测试。问题在于,这可能会在没有明显原因的情况下发生,即使是简单的页面刷新也可以将其关闭。
-
首先,尝试验证 HTML 模板以查找任何错误,有时问题在于角度命名约定的拼写。如果没有帮助,我们将继续搜索。
-
需要指出的是,如果页面加载时开发工具未打开,chrome 开发工具中的网络选项卡不会显示网络流量。
标签: javascript angularjs requirejs angularjs-scope