首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将ngInfiniteScroll实现到$http服务

将ngInfiniteScroll实现到$http服务
EN

Stack Overflow用户
提问于 2014-03-19 16:06:33
回答 1查看 2.9K关注 0票数 1

我有以下服务从外部API获取数据:

代码语言:javascript
复制
$scope.getDetails = function (id) {
  $http.get('http://api.discogs.com/artists/' + id).
    success(function(data) {
        $scope.artist = data;
    });
  $http.get('http://api.discogs.com/artists/' + id + '/releases?page=1&per_page=12').
    success(function(data2) {
        $scope.releases = data2.releases;
    });
  $scope.clicked = true;
  $scope.sliding = true;
}

它在这里填充了ng-重复:

代码语言:javascript
复制
<div class="col-md-3" ng-controller="ImageCtrl" ng-repeat="release in releases | filter:album | filter:year | filter:{ role: \'main\' }">
  <div class="release"><img class="img-responsive" ng-src="{{image}}" />           
    {{release.title}}
  </div>
</div>

我一直在检查ngInfiniteScroll文档,但我看不清楚如何实现它。

当页面触底时,我应该做一个releases?page=1++吗?

我还从$http站点上看到了基于ngInfiniteScroll的示例,但这是对我当前知识的一点了解,我不知道如何使它适应我的代码。

有什么暗示吗?

编辑:我已经使用刺客应答来创建下面的代码,但仍然无法运行。我错过了什么吗?

代码语言:javascript
复制
$scope.getDetails = function (id) {
  $http.get('http://api.discogs.com/artists/' + id).
    success(function(data) {
        $scope.artist = data;
    });
  $http.get('http://api.discogs.com/artists/' + id + '/releases?page=1&per_page=12').
    success(function(data2) {
        $scope.releases = data2.releases;
  });  

  var _page = 0;
  $scope.releases = [];
  $scope.LoadDetails = function(id) {
      _page++;
      $http.get('http://api.discogs.com/artists/' + id + '/releases?page=' + _page + '&per_page=12').then(function(data2) {
          $scope.releases = $scope.data2.releases;
      });
  };    
  $scope.clicked = true;
  $scope.sliding = true;
}

请注意,我两次包含发布$http查询,首先调用第一批版本,然后在LoadDetails函数中调用!

还有,这是一个工作柱塞

EN

回答 1

Stack Overflow用户

发布于 2014-03-19 17:30:10

无限滚动通过监听元素上的滚动事件来工作,如果您位于底部一定的距离内,则调用回调。回调将加载更多的结果(在您的情况下通过$http加载)。这样你就可以像这样建立无限的滚动:

代码语言:javascript
复制
// In your controller
var _page = 0;
$scope.releases = [];
$scope.LoadDetails = function() {
    _page++;
    $http.get('/endpoint/?page=' + _page /* ... whatever else you need */).then(function(data) {
        $scope.releases = $scope.releases.concat(data);
    });
};

// In your dom
<div infinite-scroll="LoadDetails()">
    <div ng-repeat="release in releases"> {{release}}
    </div>
</div>

这是一个链接到他们的演示

至于实现它,您可以查看这个小提琴,其中实现了一个基本的无限滚动。

希望这能有所帮助!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22511687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档