Я получаю angularjs ошибку [$ rootScope: inprog].
Error: [$rootScope:inprog] http://errors.angularjs.org/1.2.7/$rootScope/inprog?p0=%24digest
.
это вызов функции
Members.get({}, function (response) { // success $scope.family_mem = response.data; }, function (error) { // ajax loading error Data.errorMsg(); // display error notification });
в консоли я получаю результаты с помощью php controller function.but, но не обновляю $scope.family_mem
а переходя к части ошибки. это директива
myApp.directive('mySelect', function() { return{ restrict: 'A', link: function(scope, element){ $(element).select2(); } }; });
Обычно это означает, что вы определили $ rootScope. $ Применяются где-то вручную внутри другого углового кода, который уже имеет жизненный цикл. Это не должно происходить в обычных случаях, поскольку угловые дорожки сами жизненный цикл. Один общий случай, когда это необходимо, – это когда вам нужно обновить область действия из негласного кода (например, jquery или старомодный js-материал). Поэтому, пожалуйста, проверьте, есть ли у вас это. Если вам действительно нужно, лучше использовать безопасное приложение (общий фрагмент кода):
angular.module('main', []).service('scopeService', function() { return { safeApply: function ($scope, fn) { var phase = $scope.$root.$$phase; if (phase == '$apply' || phase == '$digest') { if (fn && typeof fn === 'function') { fn(); } } else { $scope.$apply(fn); } }, }; });
Затем вы можете ввести эту услугу и сделать необходимый вызов:
scopeService.safeApply($rootScope, function() { // you code here to apply the changes to the scope });
Ошибка [$ rootScope: inprog] inprogress в моем случае:
Случай 1: Это означает, что вы выполняете два действия одновременно.
Пример:
goView(); hidePopOver(); //Will trigger error
Используйте $ timeout, чтобы убедиться, что два действия (функция) не работают одновременно.
goView(); $timeout(function () { hidePopOver(); }, 300);
Случай 2 : действие не выполнено полностью.
Используйте $ timeout, чтобы убедиться, что выполнено первое действие.
$timeout(function () { $(element.target).trigger('click'); }, 300);