javascript - Angularjs 中的服务成功响应后,将数据加载到 DOM 中的延迟太多

标签 javascript angularjs

我尝试将非常大的数据集加载到 html 表中

  1. 点击按钮。

    <a ng-click="get_product()">load data</a>
    
  2. 按钮调用函数 get_product

    $scope.get_product = function () {
      // loader image shown
      var get_product = PAYMENTCOLL.getStatusBasedPaymentCollection(); //service call
      get_product.success(function (data)
      {
        $scope.pagedItems = data; //set data into array
      });
      //loader image hide
    };
    
  3. 使用ng-repeatpagedItems数组加载到html表格中。

情况1:

如果数据集较小,当数据完全加载到 DOM 中时,“加载器图像隐藏”。

情况2:

如果数据量很大,“加载器图像隐藏”,但数据仍在加载到 DOM 中(隐藏加载器后加载数据将多花 3-4 秒)。

目的:

我的目的是显示加载程序图像,直到所有数据成功加载到 DOM 中。将所有数据加载到 DOM 后,我想隐藏加载器图像。

如何解决案例 2 问题?提前致谢

最佳答案

您考虑过使用 Promise 吗?

使用$q promise这样您就可以在履行 promise 后设置 $scope.showLoaderImage

$scope.get_product = function () {
    $scope.showLoaderImage = true;
    PAYMENTCOLL.getStatusBasedPaymentCollection().then(function (e) {
        $scope.showLoaderImage = false;
        $scope.pagesItems = e.data.d;
    }, function (err) {
        //Handle Errors
    })
};

为了反射(reflect) DOM 中 $scope.showLoaderImage 的状态,请使用 ngShow ,如下:

<div ng-show="showLoaderImage">
   <!-- Image here -->
</div>

关于javascript - Angularjs 中的服务成功响应后,将数据加载到 DOM 中的延迟太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38867003/

相关文章:

javascript - 获取重定向到该页面的 URL

javascript - 如何阻止图像相互堆叠

javascript - AngularJS如何在多个ajax请求成功后调用函数?

angularjs - AngularJS中如何向上滑动和向下滑动?

javascript - Ng-animate 在 AngularJS 中不起作用?

javascript - 如何使用 angularjs 编辑输入值超出限制

javascript - 监听动态创建的 div 事件

javascript - 如何让弹出窗口永远在最上面

javascript - 如何将 JSON 转换为数组并在 jQuery 中对其进行循环?

javascript - Backbone : LayoutView needs to listenTo a ItemView inside a CollectionView