【发布时间】:2014-03-18 12:08:17
【问题描述】:
关于此错误的其他帖子总是包含有人试图 $apply 而不使用安全应用,但在我的示例中并非如此。我的函数成功返回了我从 API 请求的数据,但我无法清除这个错误,这让我抓狂。 每次在 $http 函数中调用 .success 之前,我都会在控制台中收到“错误:[$rootScope:inprog] $digest already in progress”。以下是我的控制器和服务。谢谢!
这是我的服务,包括一个使用有效负载发布 $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 确实在 getCoolData 内的 .then 语句中分配。 任何帮助摆脱此错误或使其总体上不那么糟糕的帮助将不胜感激!
这是整个错误: https://gist.github.com/thedore17/bcac9aec781ef9ba535b
【问题讨论】:
-
你还有错误之前的堆栈跟踪吗?
-
您的错误发生在 ui-bootstrap,而不是您的服务中:(匿名函数)ui-bootstrap-tpls-0.10.0.js:1539
-
这解释了很多,谢谢。我能做些什么吗?从技术上讲,一切正常,但我觉得出现这个错误并不好。
-
嗯,它是开源的,因此您可以随时深入研究 ui-bootstrap 库。 :) 或者在他们的网站上打开一个问题。
标签: angularjs angularjs-service angularjs-controller angularjs-http