Angular $ scope.Watch

时间:2016-01-06 04:35:03

标签: javascript angularjs

我在指令

的链接功能中有如下所示的scope.watch
scope.$watch(function () {
return scope.chartConfig;
}, function (value) {
console.log(value);
}, true);

它投下以下错误

angular.js:12221 TypeError: Illegal invocation
    at isArrayLike (angular.js:278)
    at forEach (angular.js:332)
    at copy (angular.js:913)
    at copy (angular.js:879)
    at putValue (angular.js:944)
    at copy (angular.js:926)
    at copy (angular.js:879)
    at putValue (angular.js:944)
    at copy (angular.js:926)
    at copy (angular.js:879)(anonymous function) @ angular.js:12221(anonymous function) @ angular.js:9055Scope.$digest @ angular.js:15574Scope.$apply @ angular.js:15824(anonymous function) @ angular.js:17580completeOutstandingRequest @ angular.js:5370(anonymous function) @ angular.js:5642
angular.js:12221 Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations: []
http://errors.angularjs.org/1.4.0/$rootScope/infdig?p0=10&p1=%5B%5D
    at angular.js:68
    at Scope.$digest (angular.js:15594)
    at Scope.$apply (angular.js:15824)
    at angular.js:17580
    at completeOutstandingRequest (angular.js:5370)
    at angular.js:5642(anonymous function) @ angular.js:12221(anonymous function) @ angular.js:9055Scope.$apply @ angular.js:15826(anonymous function) @ angular.js:17580completeOutstandingRequest @ angular.js:5370(anonymous function) @ angular.js:5642
angular.js:68 Uncaught Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations: []
http://errors.angularjs.org/1.4.0/$rootScope/infdig?p0=10&p1=%5B%5D

请找到相同

plunker链接

1 个答案:

答案 0 :(得分:1)

这里的主要问题是错误TypeError: Illegal invocation

您正在深入观察的对象包含angular.copy无法处理的DOM元素。

例如chartConfig.data.datasets[0].controller.chart.chart.canvas,它是对实际画布的引用。

此外,深入观察如此庞大的物体并不利于表现。

仅在您真正需要观看的数据上添加观察者。