AngularJS watch array of objects for data change
$watch only evaluate string or function parameter in its first argument. Change your $watch like this : $scope.$watch(‘cart.name + cart.id + cart.amount’, $scope.updateCart()); OR $scope.$watch(‘cart’, $scope.updateCart, true); See reference API