4

在我们的一个 Angular 应用程序中,我们使用ui-scroll指令进行延迟加载。我创建了一个适配器并分配给 ui-scroll 指令。我需要通过发出 API 请求和刷新数据来重新加载整个数据。

从 ui-scroll 文档中,我们可以看到 reload() 方法可用于我们分配给指令的适配器。

$scope.listAdapter = {adapter:{remain:true}};

我们将此适配器传递给自定义数据源,然后将其分配给 ui-scroll 转发器。

当用户单击按钮时,我需要通过从 API 中提取最新结果来重新加载整个结果。所以我尝试添加,

$scope.listAdapter.reload();

当我尝试调用重新加载方法时,它会抛出异常说明方法未找到。 类型错误:$scope.listAdapter.reload 不是函数

我也尝试通过重新分配数据源并将空适配器传递给范围变量,但没有运气。

如果有人解决了这个问题,请让我知道需要做什么。

4

2 回答 2

0

我看到有两种可能的问题。

  1. 范围分配错误。需要考虑到该指令在 AngularJS服务ui-scroll的帮助下将声明性定义的属性注入目标范围。$parse它可以使分配变得不平凡。有关更多详细信息,请遵循文档。这里最好的做法是使用“Controller As”语法。

  2. 打电话太早了。您不应该在初始化之前尝试执行Adapter.reload()(和其他适配器方法) ,因为在指令的链接过程中将适配器对象注入目标范围,这不是立即的。为了保护适配器方法的执行,您可以使用以下方法:ui-scrollui-scroll

    $scope.doReload = function () {
    if (angular.isFunction($scope.adapter.reload)) {
        $scope.adapter.reload(reloadIndex);
      }
    };
    
于 2017-12-11T23:22:50.480 回答
0

尝试将适配器定义为空对象: $scope.listAdapter = {};

于 2016-06-19T07:10:00.470 回答