2015-09-11 32 views
0

我正在使用angular-ui-router的resolve在移動狀態之前從服務器獲取數據。我想通知用戶請求是否失敗。我有服務會響應請求失敗的錯誤。我的問題是如何檢測UI-resolve中的故障並觸發某些Modal服務,如彈出。在Angular UI路由器中未解決數據時出錯處理

我已經在網上閱讀了一些相關帖子,但我仍然困惑如何讓它發生。先謝謝了!

配置和服務:

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); 
     } 
    }); 

回答

1

經過一番研究,我通過創建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); 
        } 
       ); 
      } 
     } 
    }); 
+0

創建解決方案。 – Raj

相關問題