0

我讨厌问已经有很好信息的问题,但我错过了一些东西来阻止我的实施工作。

我的场景是在服务上使用递归函数以迭代块的形式加载我的数据。所有数据都由示波器捕获,但仅显示第一组数据,除非您导航离开然后再返回。显然,我需要 $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 但似乎每个人都这样做......

4

1 回答 1

0

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

于 2013-10-09T18:26:08.497 回答