Angular UI路由器,路由解析刷新按钮

Angular UI Router, route resolve breaking refresh button

本文关键字:刷新 按钮 路由 UI 路由器 Angular      更新时间:2023-09-26

我的Angular UI路由器有问题。当我路由以下状态时,它完全正常工作。但是,当我刷新页面时,解析会获得数据,它会被注入到控制器中,但视图不会加载。简言之,当状态通过ui sref链接或$state.go路由到时,状态运行良好,但当刷新页面时则不然。以前有人遇到过这个问题吗?

  $stateProvider.state('information', {
        templateUrl: 'information.html',  
        resolve:{
             'infoData': function($q, myFactory) {
                 var data = {};
                 data.first = myFactory.get(1);
                 return $q.all({first: data.first.$promise});  
              }
        },
        controller: function($scope, infoData){
          console.log(infoData);
        }
    }

我已经遇到过几次了。在我的routes.js文件中,我总是使用html5模式,消除了angular默认为.的hash bang

// Set HTML5 mode to true
$locationProvider.html5Mode(true).hashPrefix('!');

我的.htaccess 中也有这个

RewriteEngine on
#let angular do its thing
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.html [NC,L]

我不知道我是否可以直接回答你的问题,但我可能会为你指明正确的方向。你的症状似乎和我的相似。

这个答案让我意识到,Angular UI路由器似乎默认情况下会吞下状态错误。在向$stateChangeError事件添加全局侦听器并记录错误后,我发现在刷新页面时,解析函数中的一些依赖项(在您的示例中为myFactory(没有加载。通过应用程序其余部分的正常导航,这不是一个问题,因为它是我的几个控制器之间的共享依赖项,这些控制器已经正确加载了它

在我的项目中,我们使用RequireJS和Angular,所以对我来说,解决方案是将我的依赖项添加到我的新控制器的define列表中(似乎与您无关,所以我不会详细介绍(。此外,值得一提的是,我的项目使用的是Angular 1.2.13和Angular UI Router 0.2.10。

希望这能帮助。。。如果是的话,请投票支持我引用的答案!