javascript - 如何检查屏幕高度以进行进一步的 $http 请求?

标签 javascript angularjs

假设一个函数检查屏幕高度并发出 $http.get 请求,直到它填满屏幕。

app.controller('HomeController', function ($scope, $timeout, Api) {
  function checkScreen () {
    $timeout(function() {
      //Firefox fix
      var html = document.getElementsByTagName('html')[0];
      if (html.scrollTop == 0) {
        html = html.getElementsByTagName('body')[0];
      }

      var scrollHeight = html.scrollHeight;
      var clientHeight = document.querySelector('body').clientHeight;
      var fromTime = Date.parse($scope.data[$scope.data.length - 1].value.date);
      if (clientHeight == scrollHeight) {
        $scope.fetcher(fromTime, checkScreen);
      }
    });
  }

  $scope.fetcher(0, checkScreen);
});

fetcher 使用 Api 服务来处理 $http 请求

$scope.fetcher = function (fromTime, callback) {
  Api.post.getList(fromTime).then(function (result) {
    for (var i = 0; i < result.data.length; i++) {
      $scope.data.push(result.data[i]);
    };
    callback();
  });
}

此代码有几个不良做法问题:

  • 检查 Controller 中的 HTML/CSS 属性
  • 需要在 Controller 中初始调用 fetcher
  • 如果我需要在指令中调用 fetcher(例如无限滚动附加程序),该指令将与 Controller 紧密耦合。

我应该如何重构它来消除这些问题?
注意: $scope.fetcher 在每个 Controller 中都不同,但无限滚动指令对于所有 Controller 来说都是通用的。

最佳答案

我认为使用 Api 服务创建一个名为 Fetcher 的更具体的服务是比在 Controller 中使用 $scope.fetcher 更好的解决方案。
这样方向就不会再与 Controller 紧密耦合
另外,检查屏幕作为 AngularJS 一侧的独特功能,并使用它在 Controller 中返回的 bool 值来使用 Fetcher 服务进行多个操作

关于javascript - 如何检查屏幕高度以进行进一步的 $http 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26989307/

相关文章:

javascript - AngularJS 中的二维数组 $Index

javascript - 如何在 AngularJS 中设置 cookie 的过期日期

javascript - 将输出结果拆分为 html 中同一表的两个水平部分

javascript - 如何使用 AngularJS 在 TreeView 中添加静态值?

javascript - 尝试将 Stripe API key 添加到 Google Apps 脚本中的 UrlFetchApp 时收到 401 'truncated server' 错误

javascript - Fabric .js : move clipped Image behind fixed clipping-mask

javascript - AngularJS promise 错误解析数据

javascript - ESLint : Spacing around equal sign

javascript - 获取具有相同类的其他元素中的元素的索引

javascript - 在数组 typescript 和 angularjs 和 ionic 中查找值