2013-09-24 3 views
8

Korzystanie $ http mogę złapać błędy jak 401 prościej:Jak złapać 401 (lub inny błąd statusu) w kanciastym wywołaniu serwisowym?

$http({method: 'GET', url: 'http://localhost/Blog/posts/index.json'}). 
success(function(data, status, headers, config) { 
    $scope.posts = data; 
}). 
error(function(data, status, headers, config) { 
    if(status == 401) 
    { 
     alert('not auth.'); 
    } 
    $scope.posts = {}; 
}); 

Ale jak mogę zrobić coś podobnego przy użyciu zamiast usług. Tak wygląda moja obecna usługa:

myModule.factory('Post', function($resource){ 
    return $resource('http://localhost/Blog/posts/index.json', {}, { 
      index: {method:'GET', params:{}, isArray:true} 
    }); 
}); 

(Tak, uczę się tylko kanciasto).

Solution (dzięki Nitish Kumar i wszyscy współpracownicy)

W regulatorze post byłem nazywając usługę tak:

function PhoneListCtrl($scope, Post) { 
    $scope.posts = Post.query(); 
} 
//PhoneListCtrl.$inject = ['$scope', 'Post']; 

jako sugerowane przez wybraną odpowiedź, teraz jestem Nazywa się to tak: i działa:

function PhoneListCtrl($scope, Post) { 
    Post.query({}, 
    //When it works 
    function(data){ 
     $scope.posts = data; 
    }, 
    //When it fails 
    function(error){ 
     alert(error.status); 
    }); 
} 
//PhoneListCtrl.$inject = ['$scope', 'Post']; 

Odpowiedz

10

w wywołaniu kontrolera Post like.

Post.index({}, 
      function success(data) { 
       $scope.posts = data; 
      }, 
     function err(error) { 
      if(error.status == 401) 
      { 
      alert('not auth.'); 
      } 
      $scope.posts = {}; 
     } 
); 
1

Zaspokojenie obietnic zwrotu, podobnie jak http. Wystarczy podłączyć do uchwały o błędzie:

Post.get(...).then(function(){ 
    //successful things happen here 
}, function(){ 
    //errorful things happen here 
}); 

AngularJS Failed Resource GET

1

$ http to serwis, podobnie jak $ zasób jest usługą.

myModule.factory('Post', function($resource){ 
    return $http({method: 'GET', url: 'http://localhost/Blog/posts/index.json'}); 
}); 

To zwróci obietnicę. Możesz również użyć obietnicy w swojej fabryce i łańcuchu, aby Twoja fabryka (serwis) obsługiwała wszystkie błędy.

Powiązane problemy