app.controller('indexController', ['$scope', '$location', 'authService', function ($scope, $location, authService) {
var vm = this;
vm.$onInit = function () {
vm.active = {
"home": true,
"welcome": false,
"user": false,
"logout": false,
"login": false,
"signup":false
};
};
$scope.$watch('vm.active', function (newObj, oldObj) {
Object.keys(newObj).filter(function (key) {
vm.active[key] = newObj[key] !== oldObj[key];
return vm.active[key];
});
}, true);
}]);
这里我尝试更改vm.active
对象属性,但它显示如下错误:
angular.js:14642错误: [$ rootScope:infdig] http://errors.angularjs.org/1.6.5/ $ rootScope / .. 在angular.js:88 at m。$ digest(angular.js:18248) at b。$ apply(angular.js:18480) 在HTMLAnchorElement。 (angular.js:27290) 在HTMLAnchorElement.dispatch(jquery-3.1.1.js:5201) 在HTMLAnchorElement.elemData.handle(jquery-3.1.1.js:5009)
答案 0 :(得分:1)
它显示错误,因为您的代码导致无限$ digest循环,因为您试图在摘要循环期间更改模型。
要解决此问题,请避免使用$ watch更改模型。