2015-01-06 2 views
0

У меня есть следующий Угловой и HTML код:нагрузки Далее в угловых

<script type="text/javascript"> 

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

    application.service('ImageService', function ($http) { 
    return { 
     GetList: function() { 
     return $http.get('api/images'); 
     }, 
    } 
    }); 

    application.controller('ImageController', function ImageController($scope, ImageService) { 

    ImageService.GetList() 
     .success(function (data, status, headers, config) { 
     $scope.images = data; 
     }) 
     .error(function (data, status, headers, config) { }); 
    }); 

</script> 

<div data-ng-app="Application" data-ng-controller="ImageController" class="gallery"> 
    <div data-ng-repeat='image in images' class="image"> 
    <img src="{{image.Url}}" alt="" /> 
    </div> 
</div> 

вызов API возвращает следующее:

[ 
    {"Key":"89207","Url":"http://somedomain.com/image89207.jpg"}, 
    {"Key":"12321","Url":"http://somedomain.com/image12321.jpg"}, 
    {"Key":"23434","Url":"http://somedomain.com/image23434.jpg"} 
] 

Я хотел бы загрузить следующую страницу, когда пользователь прокручивается до конца страницы или когда нажимает кнопку «Показать больше».

мне нужно вернуться на моем JSON величина NextPage ...

Дело в том, что если текущая страница «233», то следующая страница может быть «4545».

Я думаю, что API, возможно, потребуется вернуть следующее значение страницы и список изображений.

Как я могу это сделать?

+0

Вы правы - API должен вернуть значение следующей страницы. – Blazemonger

+0

Но как я могу загрузить следующую страницу, когда пользователь прокручивается до конца страницы или когда нажимает кнопку «показывать больше»? –

+0

вам нужно сделать $ http call, чтобы показать больше кликов. сервер должен взять параметр page и pageSize, чтобы обработать запрос и дать правильный ответ, –

ответ

1

Я согласен с pankajparkar. Вы должны обработать кнопку «показать больше», загрузить больше изображений и присоединиться к ней с помощью $ scope.images. ng-repeat выполнит оставшуюся работу. Вот пример кода

<script type="text/javascript"> 
    var application = angular.module('Application', []); 

    application.service('ImageService', function($http) { 
     return { 
     GetList: function(page) { 
      return $http.get('api/images', { 
      params: { 
       page: page 
      } 
      }); 
     }, 
     } 
    }); 

    application.controller('ImageController', function ImageController($scope, ImageService) { 

     var page = 0; 

     $scope.images = []; 

     var load = function() { 
     ImageService.GetList(page) 
      .success(function(data, status, headers, config) { 
      $scope.images = $scope.images.concat(data); 
      }) 
      .error(function(data, status, headers, config) {}); 
     }; 

     load(); 

     $scope.loadMore = function() { 
     page++; 
     load(); 
     } 
    }); 
    </script> 

    <div data-ng-app="Application" data-ng-controller="ImageController" class="gallery"> 
    <div data-ng-repeat='image in images' class="image"> 
     <img src="{{image.Url}}" alt="" /> 
    </div> 
    <div> 
     <button ng-click="loadMore()">load more</button> 
    </div> 
    </div> 
+0

Проблема с вашим кодом в том, что он не загружает изображения при запуске ... Я попытался изменить его на: var page = 0; $ scope.images = []; нагрузка(); ... Но почему-то это не работает. Любая идея почему? –

+0

И примечание стороны: любая причина, по которой вы используете кнопку для ng-click, а не якорь (a)? –

+0

Да, вы правы - я забыл загрузку вызова() при запуске. Я сделал исправление. (Может быть, вы называете «load()» перед «var load = ...»?). Никакой специальной причины для кнопки - это может быть любой элемент. – Ilya

Смежные вопросы