UI-Router可以忽略初始状态吗?

时间:2014-09-25 15:37:30

标签: angularjs angular-ui-router

是否有可能让UI-Router在初始页面加载时忽略页面状态,并且仅在后续状态更改时启用?

基本上,当用户第一次导航到http://example.com/foo时,我将在服务器上构建整个页面。然后,当用户导航到/bar或稍后返回/foo时,我希望Angular处理状态更改并将页​​面内容注入视图。

就像现在一样,UI-Router将页面加载解释为状态更改并替换已经呈现的内容,从而导致闪烁和浪费带宽。有办法防止这种情况吗?

1 个答案:

答案 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并查看它来添加一些状态检查。但这很好地处理了我的情况。

如果有人能指出这种方法中缺少的东西,我会很高兴。