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及以上版本。