Листенер для store.load
Здравствуйте.
У меня тут возник вопрос по добавлению листенера к стору. Имеется конструкция типа "Кощеева смерть": окно, в нем кардлаяут, в карте панель, в панели грид, у грида стор. Я хочу прицепить к стору хендлер на load. Сама функция расположена в контроллере окна. store: { type: 'emailsearchuser', listeners: { load: 'loaded' } }, На этом я получаю ошибку: [E] Ext.util.Event.getFireInfo(): No method named "loaded" on SafetyRound.store.EmailSearchUser. Попробовал указать листенерам скоп: store: { type: 'emailsearchuser', listeners: { load: 'loaded', scope: 'controller' // <--------- } }, Опять таки ошибка: Ext.mixin.Observable.resolveListenerScope(): scope: "controller" can only be specified on classes that derive from Ext.Component or Ext.Widget. И как же мне использовать метод из контроллера? |
вешайте лиснер недекларативным способом как вариант..
store.on('load', controller.loaded, controller); |
Так то он вешается. А хотелось через конфиг.
|
Можно попробовать подвесить обработчик из контроллера.
Например в сторе указать референс. а при инициализации контроллера: this.lookupReference('store').on('load', this.onStoreLoad, this); |
XAPuTOH, разве это отличается от варианта предложенного siber-biber? Я так и делаю, просто мне странно что такая крутая система программирования через конфиги как у экста дала сбой на подобной ерунде.
|
Все эти авто распознавания scope насколько я понимаю работают для дерева компонентов и на этом поставили точку. А у вас стор.
Тут ситуация сложнее ..стор может быть расшарен между компонентами, я думаю могут быть некоторые сложности с резолвом.. Не хотели усложнять видимо настолько. |
Видимо, да. Ну ладно, пусть это будет наибольшей проблемой Экста )
|
@Infarch,
Автораспознавание scope действительно работает только для компонентов, и причин тому несколько (в т.ч. указаная siber-biber). Декларативную конфигурацию можно использовать с контроллерами, через специальный домен событий store: http://docs.sencha.com/extjs/6.0/6.0...ler-cfg-listen. Причём этот вариант будет работать не только с глобальными контроллерами, но и с ViewController тоже. :) Простор для фантазии... |
Часовой пояс GMT +3, время: 02:35. |