AngularJS 不能在浏览器重新加载时运行
Posted
技术标签:
【中文标题】AngularJS 不能在浏览器重新加载时运行【英文标题】:AngularJS doesn't run on browser reload 【发布时间】:2015-11-24 12:31:21 【问题描述】:我有一个使用以下组件的新项目:
-
Node.js (v0.10.37)
快递微框架
Jade 模板引擎
Angular.js(最新)
材料设计库 (material.angularjs.org)
jQuery
我在重新加载浏览器时遇到问题(点击浏览器刷新按钮)。我没有使用任何 Angular.js 路由功能。我正在使用 Express 路由器,并且每个页面都有一条路由。
当我尝试刷新时,使用此组件构建的页面有时(20 次重新加载中的 1 次)AngularJS 无法运行而没有任何控制台错误。
当我在以下路线之间导航时,该问题更为常见:
我在 localhost:3000/index 上,我进入 localhost:3000/about
这种情况下更容易出现这个问题。
编辑:我没有使用任何 AngularJS 路由功能。
编辑:我还测试了 DOMContentLoaded 包装解决方案。
编辑:我附加了一个 plunker,但 问题没有重现。我认为它也与服务器有关。 plunker真的很接近现实。
ng-app="StarterApp"
See the plunker :)
编辑: http://plnkr.co/edit/Vi1AQxNxJTDBf4B1ZEhr?p=preview
编辑:如果您遇到 plunker 上的错误,请告诉我。
编辑:我也尝试激活:$locationProvider.html5Mode(true);
编辑: 我还发现当服务器和计算机(在 localhost 上运行)确实压力很大时会发生这种情况。 (82% RAM - 1 个 CPU 内核,99%)
我还跟踪了请求,发现文件在主请求上正确加载,但在 Angular 中完成的请求(Ajax 请求)没有触发。
我还安装了一些 Chrome AngularJS 调试插件,但出现这种情况时它也无法运行。
这种情况有时会发生在我的所有页面上,所以我认为某些代码不会有用。
为了解决这个问题,我再次重新加载,有时我重新加载 2 次以启动 Angular.JS。
有以下几种情况:
工作时
界面
控制台
当它不工作时
界面
控制台
这真的让我很烦。我将继续调查此问题,但我将非常感谢任何帮助。
【问题讨论】:
你能复制它并在线发布吗? 我会尝试,我会回来的链接:) 在线示例会很棒,但您的快速代码/静态路由也会有所帮助。 【参考方案1】:埃弗里卡!
我发现了问题。谢谢大家的支持。
是angular.js调试chrome/firefox扩展的问题。
Ng-Inspector 在每次加载时加载一个脚本 ng-inspector.js,在这个脚本中,它是一个控制器,处理 $state 服务并声明如何加载用户模块以便将调试数据推送到插件中。
不知何故,这个加载配置与我的加载配置混淆了。
代码写得很好,但我没有想到这一点。
因此,如果您遇到此问题,请确保您的调试插件(ng-inspector 和 angular batarang)不会与项目内的业务逻辑交互。
我进行了一些压力测试以确保不再出现此问题。
服务器负载
现在一切正常。
【讨论】:
以上是关于AngularJS 不能在浏览器重新加载时运行的主要内容,如果未能解决你的问题,请参考以下文章
IFrame 中的 AngularJS run() 方法不会在 iframe 重新加载时重新运行
Cordova 上的 AngularJS $resource POST 调用不能在 iOS/Android 设备上运行,但可以在浏览器上运行