【发布时间】:2014-03-17 14:56:37
【问题描述】:
我遇到了一个非常奇怪的情况,我似乎无法弄清楚。这是我的路线:
$routeProvider.when(/application1/:type, {
templateUrl: "application1/index.html"
})
.when(/application1/:type/:folder, {
templateUrl: "application1/index.html"
})
.when(/application2, {
templateUrl: "application2/index.html"
})
.when(/application3, {
templateUrl: "application3/index.html"
});
由于某种原因,当我在 application2 和 application3 上使用 $location.path 时,它工作正常并且在我调用它时会立即更新。但是,每当我切换到 application1 上的任何内容时,大约需要 3-5 秒,然后开始加载。当我在 application1 上刷新页面时,它会立即工作,所以我认为它不是与之关联的代码。某些路线的行为怎么会如此不同?
更新:我在我的应用程序上运行了一个分析器:在 application1 中加载路由时,运行 $apply 和/或 $digest 似乎需要 5 秒以上。我有什么方法可以加快这个过程?
【问题讨论】:
-
如果您将整个控制器注释为“application1”,它仍然很慢吗?我的直觉是,这是您的控制器中的某些东西,一个 ng-repeat 或视图中运行非常缓慢的其他东西。这可能不是路由问题。
-
我在加载的第一个控制器的第一行添加了一个断点。直到延迟结束后,这条线才会被击中。我还检查了 routeSuccessful 事件并立即触发。在 routeSuccessful 事件触发和第一个加载的控制器的第一行之间存在大量延迟。
-
这只是模型在 $apply 和 $digest 上过于庞大的问题。本质上,我在更改路线之前清除了模型,这大大提高了速度。
-
你是怎么做到的?我遇到了类似的问题,可以从相同的解决方案中受益。
标签: angularjs routing route-provider