Можно ли сохранить запрос в переменной? - PullRequest
0 голосов
/ 09 июля 2019

Я на самом деле использую простую разбивку страниц. Это работает с простой логикой: Пустая болячка -Выбор данных в соответствии с фактической страницей

Дело в том, что переход совсем не гладкий, убедитесь сами: https://streamable.com/sg6sg

Есть ли способ это исправить? Мой разум сказал мне, что было бы решением сначала получить данные, очистить сортировку, а затем отправить данные обратно в хранилище.

import Component from '@ember/component';
import { computed } from '@ember/object';
import { sort } from '@ember/object/computed';
import { inject as service } from '@ember/service';

export default Component.extend({
  store: service(),
  posts: computed(function() {
    return this.get('store').peekAll('post');
  }),

  pageSize: 20,
  pageNumber: null,
  recordCount: null,

  sortProps: ['createdAt:desc'],
  sortedPosts: sort('posts', 'sortProps'),

  loadPosts(getPageNumber) {
    const pageSize = this.get('pageSize');

    this.get('store').unloadAll('post');
    this.get('store').
      query('post', {page: {number: getPageNumber, size: pageSize}}).
      then((result) => {
        this.setProperties({
            'recordCount': result.get('meta.record-count'),
            'pageNumber': getPageNumber
        });
      };
  },

  init() {
    this._super(...arguments);
    this.loadPosts(1);
  },

  actions: {
    getPage(getPageNumber) {
      this.loadPosts(getPageNumber);
    }
  }
});

1 Ответ

0 голосов
/ 10 июля 2019

Ola @elo, спасибо за ваш вопрос!

В настоящее время это невозможно сделать с помощью готового решения, но я бы порекомендовал изучить состояния загрузки для вашего маршрута, поэтомуВы можете показать своим пользователям спиннер или что-то еще во время загрузки данных.Это сделает его немного менее резким.

Если вы хотите посмотреть, как установить простое состояние загрузки, вы можете следовать инструкциям здесь: https://guides.emberjs.com/release/routing/loading-and-error-substates/#toc_loading-substates

Конечно, будет, будьте способом достичь того, чего вы хотите, но вы потеряете некоторые функциональные возможности использования магазина в первую очередь, и можно утверждать, что пользовательский опыт может быть одинаково неприятным (данные не меняются после нажатия кнопки, а затемвдруг это так).Я думаю, что использование состояния загрузки в вашем случае - это лучшее промежуточное звено ?

...