gpt4 book ai didi

javascript - AngularJS 初始路由 Controller 未加载。后续的都还好

转载 作者:行者123 更新时间:2023-11-28 02:09:31 25 4
gpt4 key购买 nike

我有一个 HTML5 PushState 应用程序。由于某种原因,当我第一次加载时,负责我最初点击的路线的 Controller 没有加载。如果我点击周围,一切都很好。

我不太确定为什么会发生这种情况,可以在此处查看演示:http://osumo.paas.allizom.org

这曾经是好的。我今天在一些与 $routeProvider 无关的组件上做了一些工作,但它就坏了。

有人有什么想法吗?

谢谢。

最佳答案

所以要回答这个问题,它变得非常..有趣。问题实际上来自这一行:https://github.com/shuhaowu/osumo/commit/c539d8048696152ad75f13a6d965160381b89a21#L2L22

这个原因实际上很合乎逻辑,尽管弄清楚起来很痛苦。基本上我正在做一些我不应该做的事情(这种情况经常发生)。

首先,代码是在初始化服务时设置区域设置。这本身没什么大不了的,因为我们想将语言环境设置为 navigator.language。此代码在这里:https://github.com/shuhaowu/osumo/blob/c539d8048696152ad75f13a6d965160381b89a21/static/js/develop/services/appservice.js#L165

当这个被调用时,一个事件被触发,这个事件将导致一堆指令改变它的文本。再说一次,这没什么大不了的。 https://github.com/shuhaowu/osumo/blob/c539d8048696152ad75f13a6d965160381b89a21/static/js/vendors/l10n.js#L23

麻烦来了。有问题的代码版本包括 $rootScope.$$phase || $rootScope.$apply() 当设计库时,假设可以在 Angular 世界之外调用 setLocale,并且它希望有点神奇,以便在事件触发时一切正常。虽然我无法确定 Angular 到底发生了什么,但我的猜测是,此时 $scope.$$phase 尚未设置,因为我们仍在初始化不同的组件。此处调用 $apply 导致 Angular 开始应用于页面,从而导致页面永远无法加载。

经验教训:不要做蠢事。

关于javascript - AngularJS 初始路由 Controller 未加载。后续的都还好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17309488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com