Rails will_paginate gem с angular.js для разбиения на страницы

Контекст: у меня есть серверная часть Rails, служащая API для внешнего приложения Angular.JS.

Задача: Я хочу получить все записи о различных видах «динозавров» из бэкэнда Rails. Поскольку записей более 500, я хочу получить только 30 видов за раз.

Мой текущий подход: я использую гем will_paginate в своем действии контроллера индекса Rails для динозавров_контроллера. У меня так работает.

def index
  @dinosaurs = Dinosaur.paginate(:page => params[:page], :per_page => 30)
end

В моем угловом коде:

У меня есть модуль DinoApp, и я использую ngresource для создания ресурса Entry.

app = angular.module("DinoApp", ["ngResource"])

app.factory "Entry", ["$resource", ($resource) ->
  $resource("/api/v1/dinosaurs/:id", {id: "@id"}, {update: {method: "PUT"}} )
]

Мой контроллер Angular выглядит так:

@MainController = ["$scope", "Entry", ($scope, Entry) ->
  $scope.entries = Entry.query({page: 1})
  $scope.viewPost = (dinosaurId) ->
]

Эта строка кода попадет в API в действии indexs_controller для index и будет возвращать только 30 видов «динозавров» за раз:

$scope.entries = Entry.query({page: 1})

Теперь - как мне заставить angular.js показывать кнопку следующей страницы и добавлять следующую страницу в представление?


person Hung Luu    schedule 08.10.2013    source источник
comment
вы сможете решить это?   -  person Anshul Sharma    schedule 12.12.2013
comment
Есть ли шанс опубликовать ваше полное решение с помощью драгоценного камня angular-will-paginate?   -  person ardochhigh    schedule 04.02.2014
comment
нет, мне не удалось ее решить, но см. ниже директиву HeavySixer. надеюсь, он может опубликовать пример   -  person Hung Luu    schedule 14.02.2014


Ответы (2)


Я создал директиву для этого, которая может быть полезна:

https://github.com/heavysixer/angular-will-paginate

person heavysixer    schedule 17.12.2013
comment
Спасибо за драгоценный камень - я только что столкнулся с парой проблем: параметры конфигурации для предыдущего и следующего действительно необходимы (не являются обязательными), и у меня были небольшие проблемы с загрузкой шаблона из кеша - он не мог найти путь - но Я смог заставить его работать, и это сэкономило мне кучу времени. Спасибо! - person xdotcommer; 08.01.2014
comment
круто, спасибо за отзыв, я посмотрю на объект конфигурации и удостоверюсь, что предыдущий/следующий действительно необязательны. - person heavysixer; 08.01.2014
comment
Драгоценный камень выглядит хорошо. Есть ли шанс опубликовать пример кода Rails/Angular с его использованием? - person ardochhigh; 04.02.2014

Вы можете использовать счетчик для количества страниц, которое увеличивается каждый раз, когда вызывается ваш контроллер.

var counter = 1;

$scope.loadPage = function() {
$scope.entries = Entry.query({page: counter})   
counter += 1 ;    
}

И есть кнопка, которая ссылается на следующую страницу.

<button ng-click="loadPage()">Next page</button>
person ogm    schedule 24.02.2014