Изменить: Похоже, что это может быть связано с Chrome v43, я понижен до версии v42, и все работает нормально.
Изменить: Я отправил issue в репозиторий Angular Github.
Кажется, что ошибка
return logFn.apply(console, args);
строка 12221
в источнике angular.js.
Здесь ссылка с ошибкой Chromium.
Любые советы о том, что делать сейчас?
Я пытаюсь перенести свое приложение из AngularJS v1.2 в v1.3 или v1.4, но я получаю TypeError: Illegal invocation
в Chrome (попытался выиграть, osx и ubuntu).
Трассировка стека не помогает:
TypeError: Illegal invocation
at equals (angular.js:1034)
at equals (angular.js:1034)
at equals (angular.js:1034)
at equals (angular.js:1034)
at equals (angular.js:1034)
at Scope.$get.Scope.$digest (angular.js:15550)
at Scope.$get.Scope.$apply (angular.js:15824)
at done (angular.js:10263)
at completeRequest (angular.js:10435)
at XMLHttpRequest.requestLoaded (angular.js:10376)
Итак, это как-то связано с запросами AJAX, но я также получаю:
TypeError: Illegal invocation
at equals (angular.js:1034)
at equals (angular.js:1034)
at equals (angular.js:1034)
at equals (angular.js:1034)
at equals (angular.js:1034)
at Scope.$get.Scope.$digest (angular.js:15550)
at Scope.$get.Scope.$apply (angular.js:15824)
at tick (angular.js:10983)
Я использую $interval
для обновления класса модели (который является factory и отражается в представлениях через установку $scope.client
для этого класса):
var runTimer = function () {
self.timeOnline = time(self.timeSoFar);
self.timeSoFar = Date.now() / 1000 - self.alarmTriggeredTime;
};
$interval(runTimer, 1000);
Я думаю, что проблема с $digest/$apply
. Я потратил несколько часов на отладку, но до сих пор не понял, что происходит.
Любые указатели на дальнейшую отладку очень ценятся.