我有一个Store,我试图在构造函数中定义它的代理,如下所示:
Ext.define('App.store.LabStore', {
extend: 'Ext.data.Store',
constructor: function(config) {
var prox = new Ext.data.proxy.Ajax();
prox.setUrl('http://server:port/app/labs');
prox.setHeaders({'Content-type': 'application/json'});
prox.setReader({type: 'json',rootProperty: 'departmentList'});
this.setProxy(prox);
this.callParent(arguments);
},
autoLoad: false,
model: 'App.model.Lab'
});不幸的是,这是行不通的。在我的控制器中,可以工作的是:
var labStore = Ext.create("App.store.LabStore");
var url = 'http://server:port/app/labs';
labStore.getProxy().setUrl(url);
labStore.on('load','checkLabs',this);
labStore.load();我意识到后一种方法是有效的,也许我应该继续前进,但我确实想弄清楚为什么我不能在构造函数中设置代理,以及/或者我用这种方法做错了什么。
提前感谢!
弗兰克
发布于 2016-04-09 21:52:22
不需要在构造函数中定义代理。您可以在config对象中定义所有属性,如下所示:
//define model
Ext.define('App.model.Lab', {
extend: 'Ext.data.Model',
fields: [{
name: 'name',
type: 'string'
}, {
name: 'closed',
type: 'bool'
}]
});
//define store
Ext.define('App.store.LabStore', {
extend: 'Ext.data.Store',
model: 'App.model.Lab',
proxy: {
type: 'ajax',
url: 'labs.json',
reader: {
type: 'json',
rootProperty: 'departmentList'
}
},
autoLoad: false
});
//initialize store
var store = Ext.create('App.store.LabStore');
// load data from source
store.load();这里的是一个 fiddle
或者您可以在创建store类时传递代理配置,如下所示:
var store = Ext.create('App.store.LabStore', {
proxy: {
type: 'ajax',
url: 'labs.json',
reader: {
type: 'json',
rootProperty: 'departmentList'
}
}
});但是如果你需要在构造函数中做这件事,你可以:
//define store
Ext.define('App.store.LabStore', {
extend: 'Ext.data.Store',
constructor: function(config) {
config = Ext.applyIf({
proxy: {
type: 'ajax',
url: 'labs.json',
reader: {
type: 'json',
rootProperty: 'departmentList'
}
}
}, config);
this.callParent([config]);
},
autoLoad: false
});这里的是一个 fiddle
发布于 2016-03-29 05:48:06
config参数用于初始化存储区。默认情况下,它包含一个未定义的代理。我可以肯定的是,在调用父构造函数的过程中,它会重置代理。
请尝试将代理设置为config对象。
Ext.define('App.store.LabStore', {
extend: 'Ext.data.Store',
constructor: function(config) {
var prox = new Ext.data.proxy.Ajax();
prox.setUrl('http://server:port/app/labs');
prox.setHeaders({'Content-type': 'application/json'});
prox.setReader({type: 'json',rootProperty: 'departmentList'});
config.proxy = prox;
this.callParent(arguments);
},
autoLoad: false,
model: 'App.model.Lab'
});https://stackoverflow.com/questions/36263464
复制相似问题