2015-09-01 4 views
3

Есть ли возможность на данный момент использовать разбивку на страницы с ember-data 1.13?Как использовать jsonapi pagination с данными ember-data 1.13

У меня есть совместимый API jsonapi.org с ссылкой next на верхнем уровне links. Как я могу передать массив хранения/ответа для загрузки этой страницы?

То, что я хочу сделать что-то вроде:

actions: { 
    loadMore() { 
    this.get('model').loadNextPage().then((data) => { 
     this.set('model', data); 
    }); 
    } 
} 

Благодарности

ответ

3

Мой рабочий стороне клиента рубить вокруг:

Я переопределять ajaxOptions на адаптере, чтобы сделать возможным прямой доступ к URL с store.find('model', { loadNext: '/loadMoarLink' }):

ajaxOptions(url, type, options) { 
    if(options && options.data && options.data.loadNext) { 
     url = options.data.loadNext; 
     delete options.data.loadNext 
    } 
    return this._super(url, type, options); 
} 

Чтобы получить доступ к ссылкам я переопределять normalizeResponse на адаптер для записи ссылки на мета объекта:

normalizeResponse: function(store, primaryModelClass, payload, id, requestType) { 
    let links = payload.links; 
    let response = this._super(...arguments); 
    if(!get(response, 'meta')) { 
     set(response, 'meta', Ember.Object.create()); 
    } 
    set(response, 'meta.links', links); 
    return response; 
} 

Тогда я могу получить доступ к метаданным из setupController :

controller.set('meta', Ember.copy(this.store.metadataFor('model'), true)); 

И всегда запрашивать данные next:

this.store.query('model', { 
    loadNext: this.get('controller.meta.links.next') 
}) 
+0

У вас есть репозиторий или JSBin для этого? Я хотел бы попробовать ваше решение, но у меня есть несколько проблем в ember-cli. Меня шокирует, как много работы требуется для доступа к информации, которая полностью входит в стандарт jsonapi. – allthesignals

+0

Это именно то, что нам нужно сделать ... пока мы не получим «сахар» Ember Data для доступа к ссылкам. Если это немного помогает, вот руководство, которое я написал для Ember 2.3, включая бэкэнд Rails 5 с Kaminari: http://emberigniter.com/pagination-in-ember-with-json-api-backend/ – emberigniter

0

PAGINATION скоро https://github.com/emberjs/data/issues/2905.

Для исправления temp я переделал свою логику сервера так, чтобы мои ссылки на страницы были возвращены в ключе meta вместо links. Таким образом, я мог бы использовать метод extractMeta, уже присутствующий в JSONAPISerializer. Не лучшее решение, но я думаю, что это удержит меня, пока я не смогу реализовать официальный путь.

+0

Ну, меняя сервер это не вариант для меня. – Lux

+0

справедливо, мне нравится ваше решение – shicholas

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