2017-02-01 3 views
0

Я создал сервисную службу angularJs для работы с вызовами REST. Сервис хорошо работает. У меня есть некоторые случаи, когда мне нужно установить значения в $ scope.variable и получить к ним доступ вне службы ресурсов. Но я получил неопределенный. Я завернул их в angularJs $q, но, похоже, я сделал некоторую ошибку. Пожалуйста, помогите мне решить эту проблему.Значение переменной scope не определено за пределами службы ресурсов в angularjs

AngularJs завод

myApp.factory('MyService',function($resource) { 

    return{ 
     GetMYData:$resource(my rest service URL, {}); 
     } 

    }); 

В контроллере

$scope.myMap={}; 
$scope.promises=[]; 
$scope.myData = MyService.GetMYData.query(); 
      $scope.myData.$promise.then(function (result) { 

      result.forEach(function(e, i) { 
      //Do something 
       var deferred = $q.defer(); 
       $scope.myMap[e.key]=e; //Put elements into map and i tried to access map from outside service by giving key 

       deferred.resolve(result); 
       $scope.promises.push(deferred.promise); 
       $scope.myMap[$location.search()['dataID']] //This display the actual value 
      }) 
    ... 
} 

Если параметр URL присутствует в URL я сделать следующие вещи.

if($location.search()['dataID']){ 

    $q.all($scope.promises).then(
    function(data) { 
      console.log($scope.myMap[$location.search()['dataID']]) // throws  undefined 
    },function(response) { 
     //Handle if promises are rejected 
     }) 
} 

Сообщите мне, как я могу получить доступ к значениям карты, заданным сервисом ресурсов angularJs, извне службы.

ответ

0

Что я постараюсь сделать это:

 myApp.factory('MyService',function($resource) { 




var _resource = $resource(my rest service URL, {},{ 
      query:{method:"GET",IsArray:true} 
     }) 


      return{ 
       GetMYData:function(){ 
         return _resource.query(); 
         } 
       } 

      }); 

затем:

$scope.myMap={}; 
$scope.promises=[]; 
MyService.GetMYData.$promise.then(function (result) { 

      result.forEach(function(e, i) { 
      //Do something 

       $scope.myMap[e.key]=e; //Put elements into map and i tried to access map from outside service by giving key 



       $scope.myMap[$location.search()['dataID']] //This display the actual value 
      }) 
    ... 
} 

, а затем доступ просто ваш

if($location.search()['dataID']){ 

    console.log($scope.myMap[$location.search()['dataID']])); 

} 
+0

я попытался это, но карта пуста при обращении за пределами поэтому я использовал обещания дождаться разрешения. – gihan

+0

извините, но вы используете эту услугу только для ретрансляции данных. Вы помещаете данные в $ scope.myMap в тот же контроллер, если у вас есть доступ к нему? –

+0

да я использую внутри тот же контроллер. – gihan

Смежные вопросы