在Angular UI路由器中无法解析数据时的错误处理

Shaohao Lin

resolve在移动状态之前使用angular-ui-router从服务器获取数据。我想通知用户请求是否失败。我有将响应错误的请求失败的服务。我的问题是如何检测ui-router中的故障resolve并触发一些Modal服务(如弹出窗口)。

我已经在线阅读了一些相关的帖子,但是我仍然对如何实现它感到困惑。先谢谢了!

配置和服务:

angular.module('myApp',['ui.router', 'ngAnimate', 'ui.bootstrap'])
  .config(function ($stateProvider, $locationProvider) {  
      $locationProvider.html5Mode(true);
      $stateProvider
          .state('customer', {
              url: '/customer',
              templateUrl: '/customer.html',
              controller: 'CustomerCtrl',
              resolve: {
                  /* 
                   * How to inject CustomerService here
                   * How to catch the server error
                   * How to trigger a popup
                   */
                  data: cusomter_data
              }
           });

  })
  .service('CustomerService', function($http, $q) {
      return ({
          getGeneral: getGeneral
      });

      function getGeneral(customer_id) {
          var request = $http({
              method: "get",
                  url: '/customer',
                  params: {
                      customer_id: customer_id
                  }
          });
          return (request.then( handleSuccess, handleError));
      }

      function handleError (response){
          if (!angular.isObject(response.data) || !response.data.message) {
              return($q.reject("Failed to retrieve customer information."));
          } 
          return($q.reject(response.data.message));
      }

      function handleSuccess(response) {
          return (response.data);
      }
  });
Shaohao Lin

经过研究,我找到了一个解决方案,方法是创建一个errorModal服务并将其注入以解决。这是我的解决方案。

$stateProvider
    .state('customer', {
        url: '/customer',
        templateUrl: '/customer.html',
        controller: 'CustomerCtrl',
        resolve: {
            data: function(CustomerService, SelectedCustomerService, errorModalService) {
                var shared = SelectedCustomerService;
                return CustomerService.getData(shared.customerid).then(
                    function (data) { return data; }, 
                    function(error) { 
                        var modalOptions = {
                            closeButtonText: 'Close',
                            headerText: 'Customer Error',
                            bodyText: error
                        };
                        errorModalService.showModal({}, modalOptions);
                    }
                );
            }
        }
     });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular UI路由器-使用参数“无法解析状态”

来自分类Dev

实施Angular UI路由器延迟解析

来自分类Dev

Angular-UI-路由器解析不起作用

来自分类Dev

Angular路由器解析导致未知的提供程序错误

来自分类Dev

解析错误,在Angular中创建第二个路由器出口

来自分类Dev

Angular 2-等效于路由器解析新路由器的数据

来自分类Dev

从Angular UI路由器中的数组对象创建状态

来自分类Dev

Angular UI路由器中的双向子/资源关系

来自分类Dev

Angular2 UI路由器中的参数

来自分类Dev

ui 路由器中的 Angular Provider 访问

来自分类Dev

在 Angular 路由器中动态传递数据

来自分类Dev

Angular UI路由器嵌套视图

来自分类Dev

Angular ui路由器的动态参数

来自分类Dev

Go + Angular UI路由器

来自分类Dev

Angular ui路由器,标题动态

来自分类Dev

Angular UI路由器-动态TemplateURL

来自分类Dev

Angular ui路由器,标题动态

来自分类Dev

Angular 路由器出现 404 错误?

来自分类Dev

Angular 中的错误处理注入

来自分类Dev

数据无法在ui路由器中解析

来自分类Dev

Angular Ui路由器-当页面上的任何内容引起摘要时,参数将从URL中消失

来自分类Dev

Angular ui路由器嵌套的ui-view无法正常工作

来自分类Dev

Angular ui路由器嵌套的ui-view无法正常工作

来自分类Dev

Angular4:路由器不工作。路由错误:错误:序列中没有元素

来自分类Dev

Angular路由器中的Javascript

来自分类Dev

Angular 8中的路由器防护

来自分类Dev

Angular ui路由器将查询参数解析为布尔值

来自分类Dev

Angular Jasmine UI路由器将解析值注入测试

来自分类Dev

将 UI 路由器状态解析为没有 Angular 的 URL

Related 相关文章

热门标签

归档