获取AngularJS错误:“[$rootScope:inprog] $digest已经进行中”,而没有手动$apply

前端之家收集整理的这篇文章主要介绍了获取AngularJS错误:“[$rootScope:inprog] $digest已经进行中”,而没有手动$apply前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个错误的其他帖子总是包含试图在不使用安全应用程序的情况下申请$的人,但我的例子并非如此.我的功能成功地返回了我从API中请求的数据,但是我无法清除这个错误,这让我坚强了.
每次在我的$http函数调用.success之前,我都会在控制台中得到“Error:[$rootScope:inprog] $digest has progress in …”.以下是我的控制器和服务.谢谢!

这是我的服务,包括使用有效载荷发布$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,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

添加这个小方法,并将其称为apply()
function CheckScopeBeforeApply() {
    if(!$scope.$$phase) {
         $scope.$apply();
    }
};

猜你在找的Angularjs相关文章