2016-12-25 3 views
1

У меня есть массив с булевыми значениями, и мне нужно сделать, чтобы попытаться использовать функцию $ watch, чтобы показать сообщение, когда некоторые изменения происходят в массиве.

Как вы можете видеть в этом code, массив меняет свои значения, но функция $ watch не работает. Есть идеи?

Посмотреть

<div data-ng-repeat="catA in categoryA"> 
    <b><input type="checkbox" checked="checked" ng-model="arrayCategoryA[$index]"/>{{catA.name}}</b> 
</div> 

Контроллер

app.controller("controllerApp", function($scope, $http, $filter){ 

    $scope.arrayCategoryA = []; 

    $scope.$watchCollection($scope.arrayCategoryA, function(newVal, oldVal){ 
    console.log("something changed"); 
    }, true); 

    $http.get("categoryA.json").success(function(data) { 
    $scope.categoryA = data; 
    for (var i = 0; i < $scope.categoryA.length; i++) 
    $scope.arrayCategoryA[i] = true; 
    }); 

}); 

ответ

1

$watchCollection принимает выражение часов и в этом случае имя переменной сферу охвата arrayCategoryA.

$scope.$watchCollection(`arrayCategoryA`, function(newVal, oldVal){ 
    console.log("something changed"); 
    }, true); 

Updated working plunkr

+0

Благодаря человеку, у меня есть еще одна маленькая проблема с функцией $ часов и несколько выражений. Обновленный код http://plnkr.co/edit/Wj3ICWeY17E2q0SlXk5z?p=preview – wilson

Смежные вопросы