Ответ 1
Обычно это означает, что вы определили $rootScope. $применяются где-то вручную внутри другого кода angular, который уже имеет жизненный цикл. Это не должно происходить в обычных случаях, так как angular отслеживает сам жизненный цикл. Один общий случай, когда это необходимо, - это когда вам нужно обновить область из кода angular (например, 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
});