$watch 在没有完全刷新的情况下不会触发

$watch is not trigger without a complete refresh

我有一个 $watch 设置来监视服务 (MenuFilter) 中值的数组 (menuItems)。

    $scope.filterMenuItems = MenuFilter.menuItems;

    $scope.$watch(function () {
        return MenuFilter.menuItems;
    }, function (newVal, oldVal) {

        if ( newVal !== oldVal ) {
            $scope.filterMenuItems = newVal;
        }
    });

在某个时刻删除了一个菜单项,我希望手表会更新列表,但事实并非如此。只有在我刷新页面时才会更新。

确保添加 true 作为第三个参数以进行深度观察或更好地使用 $watchCollection

问题是 $watch 仅使用引用比较,即它不监控 内部 数组的项目 - 仅监控数组引用本身(oldArray === newArray ).