加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 角度UI路由器处理404

发布时间:2020-12-17 07:39:35 所属栏目:安全 来源:网络整理
导读:我有一个包含我的API调用的服务的应用程序: var ConcernService = { ... get: function (items_url,objId) { var defer = $q.defer(); $http({method: 'GET',url: api_url + items_url + objId}). success(function (data,status,headers,config) { defer.r
我有一个包含我的API调用的服务的应用程序:
var ConcernService = {
    ...
    get: function (items_url,objId) {
        var defer = $q.defer();
        $http({method: 'GET',url: api_url + items_url + objId}).
            success(function (data,status,headers,config) {
                defer.resolve(data);
            }).error(function (data,config) {
                console.log('ConcernService.get status',status);
                defer.reject(status);
            });
        return defer.promise;
    },

我正在使用UI-Router在状态之间切换:

concernsApp

    .config( function ($stateProvider,$urlRouterProvider) {

        $urlRouterProvider.otherwise("/404/");


        $stateProvider.state('project',{
        url: '/project/:projectId/',resolve: {
            project: function ($stateParams,ConcernService) {
                return ConcernService.get('projects/',$stateParams.projectId);
            },},views: {
            ...
        }
    });

我正在使用正常的Angualr路由器,我很难理解如何实现404s.我可以看到ConcernService抛出的console.log状态被拒绝了,但是如何在状态路由器上抓到这个?

任何帮助非常感谢.

否则()规则仅在没有其他路由匹配时被调用.你真正想要的是拦截$stateChangeError事件,这是在状态转换中出现问题(例如,解决方法失败)时被触发的.您可以在 state change event docs中阅读更多内容.

你最想做的最简单的实现就是这样:

$rootScope.$on('$stateChangeError',function(event) {
  $state.go('404');
});

另外,由于$http本身是建立在承诺(解决方案)的基础上的,您的ConcernService方法可以简化为单线程(我意识到您将其扩展为调试目的,但您可以轻松链接它,只是FYI ):

var ConcernService = {

  get: function (items_url,objId) {
    return $http.get(api_url + items_url + objId);
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读