【问题标题】:Angular UI Router, route resolve breaking refresh buttonAngular UI Router,路由解析中断刷新按钮
【发布时间】:2014-04-30 23:56:15
【问题描述】:

我遇到了 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);
        }
    }

【问题讨论】:

    标签: javascript angularjs angular-ui


    【解决方案1】:

    我遇到过几次。在我的 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]
    

    【讨论】:

    • 那么一定要在你的 .htaccess 中试试这个 sn-p!
    • sn-p 到底在做什么?我认为这种非分辨率与 ui-router 框架有关,而不是与角度事物本身有关。
    【解决方案2】:

    我不知道我是否可以直接回答您的问题,但我也许可以为您指明正确的方向。你的症状好像和我一样。

    This answer 让我意识到 Angular UI Router 似乎默认吞下了状态错误。在向$stateChangeError 事件添加全局侦听器并记录错误后,我可以看到在我刷新页面时未加载解析函数中的某些依赖项(在您的情况下为myFactory)。通过正常导航应用程序的其余部分,这不是问题,因为它是我的几个正确加载它的控制器之间的共享依赖项。

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

    希望这会有所帮助...如果有帮助,请点赞the answer I referenced

    【讨论】:

    • 前段时间有这个问题,最终是由angular-ui本身引起的,在较新的版本中已修复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 2015-03-30
    相关资源
    最近更新 更多