2013-11-14 8 views
0

Я использую ExtJS 4.1 MVC, у меня есть простой магазин:ExtJS магазин обновление не стреляя

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'); 
    } 

Но когда я обновляю магазин, он ничего не показывает, что я делаю неправильно, пожалуйста?

+0

очень соответствующая часть вашего кода будет тот, где вы на самом деле «обновление» в магазине. Я чувствую, что, может быть, вы неправильно интерпретируете, когда событие должно срабатывать. То, как вы добавляете слушателя, должно работать. – rixo

ответ

0

Первое было бы использовать полное имя вашего магазина, когда вы определяете в контроллере

... 
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); 
+0

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

Смежные вопросы