Javascript ExtJS 4.2.1 can';t更改重写存储的模型

Javascript ExtJS 4.2.1 can';t更改重写存储的模型,javascript,extjs,Javascript,Extjs,我扩展了商店的定义: Ext.define('IMStore', { extend : 'Ext.data.Store', proxy : { type : 'ajax', url : '.im.read', reader : { root : 'item' } } }); 我称之为: var gridStore = Ext.create('IMStore',{ model : type }); 这在我第一次打电话的时候还

我扩展了商店的定义:

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

var gridStore = Ext.create('IMStore',{
    model : type 
});
这在我第一次打电话的时候还可以。如果我随后使用不同的
type
值再次调用
Ext.create('IMStore',{model:type})
,则新的存储实例似乎与我创建的第一个实例具有相同的模型,尽管我传入了不同的值

如果模型发生变化,代理可能需要重新创建?
有什么想法吗?

因为您的代理配置直接声明为
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);
    }
});

请注意,此限制不适用于5.x及以上版本。