javascript - Angularjs,用于Flickr图像的分页

标签 javascript angularjs pagination

我正在创建一个应用程序,该应用程序应该从 flickr 获取图像并在每个页面上显示其中 20 个图像。现在,有许多自定义指令用于对 JSON 文本数据进行分页,但我不知道如何使其与图像一起使用。我尝试过 dirPagination.js ,它很受欢迎,但我无法让它工作。我将提供代码,并请求有关此问题的帮助。 HTML:

    <div ng-controller="recentImages">
<div ng-repeat="item in imageList.photos.photo">
    <div id="imgThumbs">
        <img src="https://farm{{item.farm}}.staticflickr.com/{{item.server}}/{{item.id}}_{{item.secret}}_m.jpg" alt=""/>    
    </div>      
</div>                                      
</div>  

Angular :

var App = angular.module('App', ['ngRoute']);


 var recent = "flickr.photos.getRecent";
var page = 1;

App.controller('recentImages', ['$scope', 'forAllone', function($scope, forAllone) {
    forAllone.success(function(data) {
    $scope.imageList = data;
  });
}]);



App.factory('forAllone', ['$http', function($http) { 
        return $http.get('https://www.flickr.com/services/rest/?method=flickr.photos.getRecent&format=json&nojsoncallback=?&per_page=20&page='+page+'&api_key=5eb283c54e823624591d2c22db0217cb') 
            .success(function(data) { 
              return data; 
            }) 
            .error(function(err) { 
              return err; 
            }); 
}]);

最佳答案

在下面查看我的解决方案。

您需要添加一些控件来前后分页,并绑定(bind)单击事件以从页面变量递增/递减。我对您的工厂进行了一些更改,以便我们可以用参数调用图像检索器。我将页面变量放入 Controller 范围中,以便我们可以更轻松地在DOM中访问它,并使用它来打开我们以前的控件。

这些照片很快就会出现,因此有时候的 View 不会改变很多,但这可以做到您要寻找的东西:

var App = angular.module('App', []);

var recent = "flickr.photos.getRecent";

App.controller('recentImages', ['$scope', 'forAllone', function($scope, forAllone) {

  $scope.page = 0;
	$scope.nextPage = function() {
    $scope.page += 1;
    $scope.getPage()
  }
	$scope.prevPage = function() {
    $scope.page -= 1;
    $scope.getPage()
  }
  $scope.getPage = function() {
    $scope.imageList = [];
    forAllone.getPage($scope.page).success(function(data) {
      $scope.imageList = data;
    });
  }
}]).factory('forAllone', ['$http', function($http) {

  var factory = {};

  factory.getPage = function(page) {

    return $http.get('https://www.flickr.com/services/rest/?method=flickr.photos.getRecent&format=json&nojsoncallback=?&per_page=20&page=' + page + '&api_key=5eb283c54e823624591d2c22db0217cb')
      .success(function(data) {
        return data;
      })
      .error(function(err) {
        return err;
      });
  }
  return factory;
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="App">
  <div ng-controller="recentImages" ng-init="getPage()">
    page: {{page}}
    <a ng-click="nextPage()" href="#next">next</a>
    <a ng-click="prevPage()" ng-if="page > 0" href="#prev">previous</a>
    <div ng-repeat="item in imageList.photos.photo">
      <div id="imgThumbs">
        <img ng-src="https://farm{{item.farm}}.staticflickr.com/{{item.server}}/{{item.id}}_{{item.secret}}_m.jpg" alt="" />
      </div>
    </div>
  </div>

关于javascript - Angularjs,用于Flickr图像的分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34143293/

相关文章:

html - AngularJS:从字符串中插入 HTML

javascript - 如何让 Protractor 不等待 $timeout?

php - 如何用php和Codeigniter存储搜索条件?

angularjs - AngularJS 中如何进行分页?

json - 没有使用 instagram API 的分页信息

javascript - 如何使用js以编程方式为android/ios上的网站创建桌面快捷方式?

javascript - HubSpot 中的 fullPage.js

javascript - 无法使用 angularjs 读取 json

javascript - 比较两个时间变量小于大于

javascript - 如何在包含同步和异步函数的 Observables 的 RxJS 中创建合适的队列