Баг: история о grid, store sorters и их взаимном restore state

В процессе разработки extjs многие баги возвращаются к нам в ином виде — но по сути остаются теми же. Если grid stateful, и мы хотим запоминать в state его состояние сортировки — флаг autoLoad будет игнорироваться. Этот баг появился ещё в 5-ой версии extjs и был исправлен в версии 6.0.0.415 под тикетом EXTJS-16347. И вернулся в версии 6.5.3.57 и не исправлен по текущий момент (7.3.1). Пример и решение под катом 🙂

Ext.define('StoreStateRestorePatch', {
  override: 'Ext.data.ProxyStore',

  preventLoadOnRestoreState: true,

  load: function (...args) {
    const me = this;
    if (me.preventLoadOnRestoreState && !me.autoLoad) {
      return me;
    }
    return me.callParent([args]);
  },

  applyState: function (state) {
    const me = this;

    if (me.preventLoadOnRestoreState && !me.autoLoad) {
      me.on('beforeload', () => false, me, { single: true });
    }
    me.callParent([state]);
  },

});

Ну и собственно пример, можете предложить свои решения. Описание кейса в комментариях на fiddle. У store в примере autoLoad: false если что 🙂

Fiddle:

Добавить комментарий

Ваш адрес email не будет опубликован.