2014-04-14 3 views
0

간단한 작업을 수행하려고하지만 작동하지 않는 이유를 모르겠습니다.컨트롤러에서 서비스중인 데이터를 가져 오지 못했습니다.

서비스 :

.factory('RewardModel', ['RewardsPromise', 'CardModel', 
         function(RewardsPromise, CardModel) { 
    var RewardModel = {}; 

    RewardModel.rewards = undefined; // init 

    RewardModel.getRewards = function() { 
    RewardsPromise.getRewards().then(function(data){ // Call to a webservice (GET) 
     RewardModel.rewards = data.objects; 
    }) 
    }; 
    return RewardModel; 
    }]) 


.factory('RewardsPromise', ['$http', '$q', 
          function ($http, $q) { 
    return { 
     getRewards: function() { 
      return $http.get("http://some_url").then(function(response) { 
       return response.data; 
      }); 
     } 
    }; 
}]) 

컨트롤러 : 결국

myAppControllers.controller('PromosCtrl', ['$scope', 'RewardModel', 
              function($scope, RewardModel) { 


    $scope.rwds = RewardModel.getRewards(); 

    }]); 

, $ scope.rwds입니다

난 그냥 내 컨트롤러의 범위에 rewards 데이터를 얻으려면 빈. 이미 data.objects을 검사하려고했는데 데이터가 들어 있습니다.

아이디어가 있으십니까? 감사.

+0

당신이 좀 더 공유 시겠어요 이상적으로 jsf를 통해 코드 (구체적으로 RewardsPromise) iddle 또는 plnkr – Brocco

+0

RewardsPromise 코드를 추가했습니다 (아직 플 런커에는 포함되지 않음). 너의 도움을 위해서. –

답변

1

RewardsModel과 RewardsPromise를 결합하고 싶지 않다고 가정하면 서비스 변경 사항이 적용됩니다. 여기서는 여전히 구문 분석을 유지하면서 약속을 반환합니다 (objects). 데이터

RewardModel.getRewards = function() { 
    return RewardsPromise.getRewards() 
     .then(function(data){ 
      return data.objects; 
     }); 
}; 
return RewardModel; 

그리고 당신의 컨트롤러에서, 여기 약속 승/처리 및 약속가 해결되면 당신의 범위에 대한 값을 설정합니다.

RewardModel.getRewards() 
    .then(function(data){ 
     $scope.rwds = data; 
    }, function(data){ 
     //handle any errors 
    }); 
+0

고마워요, 그 작품! 완벽 :) –

+0

@DavidW. 문제 없습니다. 기꺼이 도와 드리겠습니다. – Brocco

0

`$ scope.rwds = RewardModel.getRewards();``

getRewards()

아무것도 반환하지 않습니다. 그것은 약속을 되돌릴 수 있습니다. 그러면 당신은 당신이 서비스에서하는 것처럼 컨트롤러에서 똑같이 할 수 있습니다.

관련 문제