【问题标题】:extjs store update not firingextjs 商店更新未触发
【发布时间】:2013-11-14 14:02:23
【问题描述】:

我正在使用 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');
   }

但是当我更新商店时,它没有显示任何内容,请问我做错了什么?

【问题讨论】:

  • 代码中非常相关的部分是您实际“更新”商店的部分。我的感觉是,当事件应该触发时,您可能会误解。您添加侦听器的方式应该可以工作。

标签: javascript extjs data-persistence


【解决方案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);

【讨论】:

  • 使用完整路径名不会改变任何东西。在这种情况下没有必要,因为存储和控制器共享相同的命名空间。
猜你喜欢
  • 2014-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-28
  • 2021-05-05
  • 1970-01-01
相关资源
最近更新 更多