首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用angular-ui-router在解析中处理404

使用angular-ui-router在解析中处理404
EN

Stack Overflow用户
提问于 2017-08-24 18:22:12
回答 1查看 455关注 0票数 0

我有一个带有方法的服务:

代码语言:javascript
复制
service.getVenueBySlug = function(slug) {
    return $http.get(API + '/venue/' + slug);
};

在我的app.routes.js`中:

代码语言:javascript
复制
.state('app.venue', {
  url: '/venues/:venueSlug',
  templateUrl: '/app/views/venue.html',
  controller: 'VenueController',
  resolve: {
    venue: ['VenueService', '$stateParams', '$state', function (VenueService, $stateParams, $state) {
      return VenueService.getVenueBySlug($stateParams.venueSlug).then(function(res) {
        return res.data;
      }).catch(function(err) {
        $state.go('app.404');
      });
    }]
  }
})

控制器VenueController简单地具有:

$scope.venue = venue

一切正常,如果我手动转到一个带有错误站点插件的URL,它会正确地重定向到404。

问题是我在控制台中收到了一个错误,它困扰着我:

有没有人知道怎么修?我使用的是angular 1.6.4和angular-ui-router 1.0.6。

EN

回答 1

Stack Overflow用户

发布于 2017-08-24 19:47:59

正如在你的帖子的评论中提到的-在你的resolve's catch中,你可能应该做一些事情:返回$q.reject({redirectTo: app.404});

然后在您的路由器配置中侦听stateChangeErrors:

代码语言:javascript
复制
$rootScope.$on('$stateChangeError',
   function(event, toState, toParams, fromState, fromParams, error) {
      if(error.redirectTo) {
         $state.go(error.redirectTo);
      }
   } 
})

$q.reject需要处理(中断)当前的stateChange,而stateChangeError则负责处理该拒绝。

(我没有测试代码,但我记得在我的一个项目中有一个类似的解决方案)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45859088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档