angularJS factory中包含xhr时,通过promise获取结果

 1 angular.module('shopping', []).
 2   factory('shoppingData',function($http, $q){
 3     return{
 4       apiPath:'/api/shoppingCart/',
 5       getAllItems: function(){
 6         //Creating a deferred object
 7         var deferred = $q.defer();
 8 
 9         //Calling Web API to fetch shopping cart items
10         $http.get(this.apiPath).success(function(data){
11           //Passing data to deferred's resolve function on successful completion
12           deferred.resolve(data);
13       }).error(function(){
14 
15         //Sending a friendly error message in case of failure
16         deferred.reject("An error occured while fetching items");
17       });
18 
19       //Returning the promise object
20       return deferred.promise;
21     }
22   }
23 }
24 
25 Following is the controller consuming the above custom service: 
26 function ShoppingCartCtrl($scope, shoppingData) {
27   $scope.items = [];
28 
29   function refreshItems(){
30     shoppingData.getAllItems().then(function(data){
31       $scope.items = data;
32     },
33     function(errorMessage){
34       $scope.error=errorMessage;
35     });
36   };
37 
38   refreshItems();
39 };

详见:http://sravi-kiran.blogspot.com/2013/03/MovingAjaxCallsToACustomServiceInAngularJS.html

posted @ 2014-12-03 15:30  testForever  阅读(302)  评论(0编辑  收藏  举报