актуализацията на extjs store не се задейства

Използвам Extjs 4.1 MVC, имам прост магазин:

Ext.define('Proj.store.GraphData', {
extend: 'Ext.data.Store',
model: 'Proj.model.GraphData',
autoLoad: false,

proxy: {
    type: "ajax",
    reader: {
        type: 'json',
        root: 'data'
    }
}});

Искам да обработя неговото събитие за актуализиране от контролера, така че това е контролерът:

Ext.define('Proj.controller.RenderGraph', {
extend: 'Ext.app.Controller',
stores: ['GraphData'],
models : ['GraphData'],
init: function () {
 var me = this;
  me.getGraphDataStore().addListener('update',this.onStoreUpdate, this);
    this.control({
        ....
        })
 },
    onStoreUpdate : function () {
        alert('OKK');
   }

Но когато актуализирам магазина, той не показва нищо, какво правя погрешно, моля?


person salamey    schedule 14.11.2013    source източник
comment
Много подходяща част от вашия код би била тази, в която всъщност актуализирате магазина. Чувството ми е, че може би тълкувате погрешно кога събитието трябва да се задейства. Начинът, по който добавяте вашия слушател, трябва да работи.   -  person rixo    schedule 14.11.2013


Отговори (1)


Първото нещо би било да използвате пълното име на пътя на вашия магазин, когато го дефинирате в контролера

...
stores: ['Proj.store.GraphData'],
...

Освен това мисля, че слушателят, който търсите, ще бъде load. Според документите update се задейства, когато екземплярът на модела е актуализиран. load се задейства всеки път, когато магазинът чете данни от отдалечен източник на данни.

http://docs.sencha.com/extjs/4.2.0/#!/api/Ext.data.Store-event-load

me.getGraphDataStore().addListener('load',this.onStoreUpdate, this);
person lmno    schedule 14.11.2013
comment
използване на пълното име на пътя няма да промени нищо. Не е необходимо в този контекст, тъй като магазинът и контролерът споделят едно и също пространство от имена. - person Lorenz Meyer; 17.11.2013