ExtJS 4.2.1无法更改被覆盖商店的模型

时间:2015-07-24 04:36:42

标签: javascript extjs

我扩展了Store的定义:

n

我称之为:

Ext.define('IMStore', {
  extend : 'Ext.data.Store',
  proxy : {
    type : 'ajax',
    url : '.im.read',
    reader : {
        root : 'item'
    }
  }
});

这样就可以了。第一次时我称之为。如果我随后使用不同的var gridStore = Ext.create('IMStore',{ model : type }); 值再次调用Ext.create('IMStore',{model : type }),则看起来新的Store实例与我创建的第一个实例具有相同的模型,即使我传入了不同的值。

如果模型被更改,似乎可能需要重新创建代理? 有什么想法吗?

1 个答案:

答案 0 :(得分:2)

由于您的代理配置直接声明为IMStore类成员,因此代理实例在第一个IMStore实例中创建时会被覆盖。这就是为什么首先创建的代理实例然后在所有IMStore实例之间共享的原因。第一个模型也是共享的,因为它链接到代理。

为避免这种情况,请在构造函数中移动代理定义:

Ext.define('IMStore', {
    extend: 'Ext.data.Store',
    constructor: function() {
        this.proxy = {
            type: 'ajax',
            url: '.im.read',
            reader: {
                root: 'item'
            }
        };
        this.callParent(arguments);
    }
});