Я создал сервисную службу 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, извне службы.
я попытался это, но карта пуста при обращении за пределами поэтому я использовал обещания дождаться разрешения. – gihan
извините, но вы используете эту услугу только для ретрансляции данных. Вы помещаете данные в $ scope.myMap в тот же контроллер, если у вас есть доступ к нему? –
да я использую внутри тот же контроллер. – gihan