$watch not being triggered on array change

后端 未结 4 1785
北荒
北荒 2020-12-08 00:29

I\'m trying to figure out why my $watch isn\'t being triggered. This is a snippet from the relevant controller:

$scope.$watch(\'tasks\', functi         


        
4条回答
  •  失恋的感觉
    2020-12-08 01:16

    Try $watch('tasks.length', ...) or $watch('tasks', function(...) { ... }, true).

    By default, $watch does not check for object equality, but just for reference. So, $watch('tasks', ...) will always simply return the same array reference, which isn't changing.

    Update: Angular v1.1.4 adds a $watchCollection() method to handle this case:

    Shallow watches the properties of an object and fires whenever any of the properties change (for arrays this implies watching the array items, for object maps this implies watching the properties). If a change is detected the listener callback is fired.

提交回复
热议问题