是否有可能让UI-Router在初始页面加载时忽略页面状态,并且仅在后续状态更改时启用?
基本上,当用户第一次导航到http://example.com/foo
时,我将在服务器上构建整个页面。然后,当用户导航到/bar
或稍后返回/foo
时,我希望Angular处理状态更改并将页面内容注入视图。
就像现在一样,UI-Router将页面加载解释为状态更改并替换已经呈现的内容,从而导致闪烁和浪费带宽。有办法防止这种情况吗?
答案 0 :(得分:1)
尽我所知,这就是你如何做到的。请注意,这只是挂钩到$rootScope
事件发射器并响应来自内置$locationProvider
的事件,因此您的主模块实际上不需要指定任何额外的依赖项(例如{{1} })。
ui.router
例如,如果您希望某些页面实际响应初始状态更改,您可以通过查看angular.module('myApp',[])
.run(['$rootScope', function ($rootScope) {
var initialStateChangeCaptured = false;
$rootScope.$on('$locationChangeStart', function (evt) {
if (initialStateChangeCaptured === false) {
evt.preventDefault();
initialStateChangeCaptured = true;
}
});
}])
或包含evt
并查看它来添加一些状态检查。但这很好地处理了我的情况。
如果有人能指出这种方法中缺少的东西,我会很高兴。