【问题标题】:Angular $watch on a recursive service function递归服务功能上的 Angular $watch
【发布时间】:2013-10-10 02:26:08
【问题描述】:

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

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

【问题讨论】:

    标签: javascript angularjs watch


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-23
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      • 2014-05-05
      • 2020-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多