Turns out you cant. You’ll find a lot of people jumping to $scope.$watchCollection, which triggers on inserts/removes/sorts, but not updates.
You can watch all changes on an array simply by passing it $scope.$watch(‘myarray’), but that triggers on any change and doesn’t target a particular array item.
The answer is really to generate a child controller with a child scope.
<div ng-repeat="item in items" ng-controller="ChildController"></div>
<script>
app.controller('ChildController', function($scope) {
$scope.watch('itemProperty', function() {console.log("Child property changed")
});
});
</script>
You have a typo in your code block – should be $watch.