В других сообщениях об этой ошибке всегда упоминается, что кто-то пытается применить $apply без использования безопасного приложения, но в моем примере это не так. Моя функция успешно возвращает данные, которые я запросил у API, но я не могу исправить эту ошибку, и это сводит меня с ума. Каждый раз перед вызовом .success в моей функции $http я получаю сообщение «Ошибка: [$rootScope:inprog] $digest уже выполняется» в консоли. Ниже мой контроллер и сервис. Спасибо!
Вот мой сервис, включающий функцию отправки вызова $http с полезной нагрузкой:
Services.service( 'CoolService', ['$q', '$rootScope', '$http', 'Auth', function($q, $rootScope, $http, Auth){
var service = {
create: function(payload){
var deferred = $q.defer();
$http({
'url': '/api/endpoint/',
'dataType':'json',
'method': 'POST',
data: payload
}).success(function(data,status, headers, config){
deferred.resolve(data);
})
.error(function(data, status, headers, config){
deferred.reject("Error in request.");
});
return deferred.promise;
}
}
return service;
}]);
А вот мой контроллер, который вызывает службу:
controllers.controller('CoolCtrl',['$scope', '$modal', '$log','CoolService', function($scope, $modal, $log, CoolService){
getCoolData = function (input_data) {
CoolService.create(input_data).then(function(results){
new_cool = results.results;
}, function(error){
console.log("there was an error getting new cool data");
});
};
var payload = {
user_id: data1,
cool_id: data2,
}
var new_cool_data = getCoolData(payload);
console.log(new_cool_data);
}]);
Журнал ниже var new_cool_data вызывается перед асинхронной операцией, но new_cool назначается внутри оператора .then в getCoolData. Мы будем очень признательны за любую помощь в избавлении от этой ошибки или в том, чтобы сделать ее не дрянной в целом!
Вот и вся ошибка: https://gist.github.com/thedore17/bcac9aec781ef9ba535b