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); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |