递归服务函数上的角度$watch

Angular $watch on a recursive service function

本文关键字:watch 服务 函数 递归      更新时间:2023-09-26

我讨厌问已经有好信息的问题,但我缺少一些东西来阻止我的实现工作。

我的方案是在服务上使用递归函数在迭代块中加载数据。示波器会捕获所有数据,但仅显示第一组数据,除非您离开然后再次返回。显然,我需要$watch我的范围。我只是不知道该怎么做。

AccountService 运行一个名为 getAccountsByPage 的方法,该方法传递的参数为 1。然后,该函数使用值 2 调用自身,依此类推。

$routeProvider.when('/accounts/', {
    ...
    controller: function ($scope, AccountService) {
        var accounts = $scope.accounts = AccountService.getAccountsByPage(1);
        $scope.$watch('accounts', function(newVal, oldVal) {
            console.log(newVal, oldVal);
        });
    }
});
console outputs: undefined, undefined
    [Object, Object, Object...] undefined

需要明确的是,获取数据不是问题。更新视图是。Angular 说不要在控制器上使用$watch但似乎每个人都这样做......

从您发布的代码来看,$scope.accounts仅在控制器首次实例化时设置一次。AccountService.getAccountsByPage下面做什么并不重要。无论它返回什么,都会被放入$scope.accounts,并触发一次$watch。在$scope.accounts更改之前,它不会再次触发,我在发布的代码中看不到这种情况。