2014-09-04 4 views
0

이 서비스를 사용하여 데이터를 저장 한 다음 동일한 컨트롤러에서 다시 호출했습니다. 그러나 그것은 서비스에 가치가 없었습니다. 다른 컨트롤러에서 다시 서비스를 호출하면 원하는 결과를 얻었습니다.이오닉 프레임 워크 : 서비스

.controller('HomeCtrl', function ($scope) { 
    $http.get(URL).success(function(data){ 
     Service.thisData(data); 

     Service.getData(); // value = 1000 
    }); 

    // call save data from service 
    // i didn't get any data from the service 
    Service.getData(); // value = undefined 
}; 

그럼 어떻게 http.get 내부를 제외하고는 서비스에서 데이터를 얻나요 ??

감사합니다.

+0

중복 가능성 [아약스의 응답 전화를 반환하는 방법?] (http://stackoverflow.com/questions/14220321/how-to -return-the-a-ajax-call로부터의 응답) – raina77ow

답변

0

공장에서 API 호출을 작성하고 데이터가 필요한 컨트롤러에서 해당 서비스를 호출하는 것이 좋습니다. 여러 컨트롤러에서 동일한 서비스를 호출 할 수도 있습니다.

내 이해에 따라, 이것이 당신의 요구 사항이되기를 바랍니다. 그렇지 않다면 알려주세요. 최선을 다할 것입니다.

당신은 plunkr 코드를 참조 할 수 있습니다 http://plnkr.co/edit/G9MkVMSQ4VjMw8g2svkT?p=preview

angular.module('mainModule', []) 

.factory('apiCallService', ['$http', '$q', '$log', 
    function ($http, $q, $log) { 
     var instance = {}; 
     var config = null; 

     instance.apiCallToServer = function (config) { 
      var deferred = $q.defer(); 

      $http(config) 
       .success(function (data, status, header, config) { 
        deferred.resolve(data); 
       }) 
       .error(function (data, status, header, config) { 
        deferred.reject(status); 
       }); 

      return deferred.promise; 

     }; 

     return instance; 

    }]) 

    .controller('FirstCtrl', ["$scope", "$log", "$location", "apiCallService", 
    function ($scope, $log, $location, apiCallService) { 

     var config = { 
       method: "get", 
       url: "/path" 
      }; 

      $scope.successCallback = function (data) { 
       $log.log("success."); 
       $scope.data = data; 
       //data will be stored in '$scope.data'. 
      }; 

      $scope.failureCallback = function (status) { 
       $log.log("Error"); 
      }; 

      apiCallService 
       .apiCallToServer(config) 
       .then($scope.successCallback, $scope.failureCallback); 

    }]); 
관련 문제