2013-11-14 68 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

*使用完整路径名称*不会改变任何内容。在这种情况下没有必要,因为商店和控制器共享相同的名称空间。 –