AngularJS模型对象值不能使用动态键更改

时间:2017-08-16 02:10:49

标签: javascript angularjs

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)

1 个答案:

答案 0 :(得分:1)

它显示错误,因为您的代码导致无限$ digest循环,因为您试图在摘要循环期间更改模型。

要解决此问题,请避免使用$ watch更改模型。