Как правильно использовать параметры в запросе Ember? - PullRequest
0 голосов
/ 23 сентября 2019

Я пытался реализовать нумерацию страниц (я пробовал как ember-cli-pagination, так и ember-simple-pagination) для своего приложения, но у меня было много проблем.Поэтому я решил попробовать пользовательскую нумерацию страниц и заметил, что не могу передать параметры в свой запрос.Например, при посещении моего API по адресу: http://jsonplaceholder.typicode.com/posts?_start=0&_limit=10, запустите и ограничьте обе работы должным образом.При вызове его в моем маршруте, кажется, полностью игнорировать это и просто дать мне все записи.Я был бы признателен за понимание того, что я делаю неправильно или как правильно реализовать разбиение на страницы в этом случае.

app / adapters / post.js

import DS from 'ember-data';

export default DS.JSONAPIAdapter.extend({
  host:'https://jsonplaceholder.typicode.com',
  pathForType(){
    return 'posts';
  }
});

app / models / post.js

import DS from 'ember-data';
const { Model } = DS;

export default Model.extend({
  user:DS.belongsTo('user'),
  title:DS.attr('string'),
  body:DS.attr('string'),
});

приложение / маршруты / post.js

import Route from '@ember/routing/route';
import { set } from '@ember/object';
import { hash } from 'rsvp';

export default Route.extend({
  model() {
    return hash({
      post: this.store.query('post', {
                start: 0,
                limit: 10
            }),
      user: this.store.findAll('user')
    });
  },

  setupController(controller, model) {
    this._super(...arguments);
    set(controller, 'posts', model.post);
    set(controller, 'users', model.user);
  }

});

1 Ответ

1 голос
/ 23 сентября 2019

Вам необходимо определить параметры запроса как на стороне маршрута, так и на контроллере.

app / router / post.js

import Route from '@ember/routing/route';
import { set } from '@ember/object';
import { hash } from 'rsvp';

export default Route.extend({
  queryParams = {
    start: {
     refreshModel: true
    },
    limit: {
      refreshModel: true
    }
  },
  model() {
    return hash({
      post: this.store.query('post', {
                start: 0,
                limit: 10
            }),
      user: this.store.findAll('user')
    });
  },

  setupController(controller, model) {
    this._super(...arguments);
    set(controller, 'posts', model.post);
    set(controller, 'users', model.user);
  }
});

И внутри app / controllers / post.js

import Controller from '@ember/controller';

export default class ArticlesController extends Controller {
  queryParams = ['start', 'limit'];
  start = 1;
  limit = 5;
}

Ember по умолчанию не вызывает модель при изменении параметров запроса.Мы говорим, чтобы это происходило в любое время изменения начала / ограничения, через refreshModel: true .

...