当商店具有服务器代理时,不会触发Beforeload事件

时间:2014-10-28 14:31:15

标签: javascript extjs extjs4

我有一个覆盖:

//Renabled the refresh buttons once these stores have loaded data OK...
Ext.define('App.overrides.data.Store', {
    override: 'Ext.data.Store',
    onProxyLoad: function () {
        switch (this.storeId) {
            case 'store1':
            case 'store2':
            case 'store3':
            case 'store4':
            case 'store5':
                Utils.getCmp('button[itemId=mainRefreshButton]').setDisabled(false);
                Utils.getCmp('button[itemId=refreshButton]').setDisabled(false);
                Utils.getCmp('button[itemId=refreshAccountButton]').setDisabled(false);
                break;
        }
        this.callParent(arguments);
    },
    listeners: {
         beforeload: function (store, operation, opts) {
            //debugger;
            switch (store.storeId) {
                case 'store1':
                case 'store2':
                case 'store3':
                case 'store4':
                case 'store5':
                    Utils.getCmp('button[itemId=mainRefreshButton]').setDisabled(true);
                    Utils.getCmp('button[itemId=refreshButton]').setDisabled(true);
                    Utils.getCmp('button[itemId=refreshAccountButton]').setDisabled(true);
                    break;
            }
            return true;
        }
    }
});

onProxyLoad覆盖适用于服务器代理。但是beforeload侦听器只触发我立即加载的内存存储(存储有固定数据,如“是”/“否”数组数据)

当我执行store1.reload()(带有服务器代理的商店)时,我永远不会到达侦听器代码。

有什么想法吗?感谢。

NB :我已在声明store1 / 2/3/4/5之前验证了覆盖运行。

1 个答案:

答案 0 :(得分:0)

我最终覆盖了load这样的方法:



//Renabled the refresh buttons once these stores have loaded data OK...
Ext.define('App.overrides.data.Store', {
  override: 'Ext.data.Store',
  onProxyLoad: function() {
    switch (this.storeId) {
      case 'store1':
      case 'store2':
      case 'store3':
      case 'store4':
      case 'store5':
        Utils.getCmp('button[itemId=mainRefreshButton]').setDisabled(false);
        Utils.getCmp('button[itemId=refreshButton]').setDisabled(false);
        Utils.getCmp('button[itemId=refreshAccountButton]').setDisabled(false);
        break;
    }
    this.callParent(arguments);
  },
  load: function() {
    switch (store.storeId) {
      case 'store1':
      case 'store2':
      case 'store3':
      case 'store4':
      case 'store5':
        Utils.getCmp('button[itemId=mainRefreshButton]').setDisabled(true);
        Utils.getCmp('button[itemId=refreshButton]').setDisabled(true);
        Utils.getCmp('button[itemId=refreshAccountButton]').setDisabled(true);
        break;
    }
    this.callParent(arguments);
  }
});




现在我抓住每家商店的每次装载/重装。