我正在使用select fiield在我的项目中加载国家/地区。我从数据库加载数据。当我使用自动加载时它非常有效:在我的商店中是真的。 但是,当我使用自动加载时它没有加载:false并手动加载它。
附加了示例caode,
提前致谢。
存储
Ext.define("MyProject.store.CountryStore", { extend: 'Ext.data.Store',
storeId: "countryStore",
config: {
model: "MyProject.model.CountryModel",
autoLoad: false, //this is the issue
header: {
"Content-Type": "application/json"
},
proxy: {
type: 'ajax',
url: MyProject.Config.config.webService + 'GetCountries',
//extraParams: {
// sessionId: sessionId
//},
reader: {
type: 'json',
rootProperty: 'd.countries'
},
actionMethods: {
create: 'POST',
read: 'POST',
update: 'POST',
destroy: 'POST'
},
writer: {
encodeRequest: true,
type: 'json'
}
}
}
});
控制器
var CountryStore = Ext.create('MyProject.store.CountryStore', { });
CountryStore.getProxy().setExtraParams({
sessionId: sessionId
});
CountryStore.load({
});
查看
{ xtype: 'selectfield',
name: 'country',
label: 'Country',
store: 'CountryStore',
valueField: 'code',
displayField: 'name',
placeHolder: 'Select your country'
}
模型
Ext.define("MyProject.model.CountryModel", {
extend: 'Ext.data.Model',
config: {
idProperty: 'Id',
fields : [
{ name: 'code'},
{ name: 'name'}
]
}
});
答案 0 :(得分:0)
在将商店设置为名称时,您使用控制器的商店,它是控制器的所有视图的全局商店。如果要使用用户定义存储,则需要将其传递给视图。
Ext.define('YourProject.controller.YourController', {
...
sessionId: 'someId',
init: function () {
var me = this;
me.control({
scope: me,
'yourviewname': {
afterrender: me.onViewAfterRender
}
});
me.callParent(arguments);
},
onViewAfterRender: function(view) {
var store = view.getStore();
if (store) {
store.getProxy().setExtraParams({
sessionId: sessionId
});
store.load();
}
}
...
});
Ext.define('YourProject.view.YourView', {
...
alias: 'widget.yourviewname',
requires: ['YourProject.store.CountryStore'],
initComponent: function() {
var me = this,
countryStore = Ext.create('YourProject.store.CountryStore', {});
Ext.applyIf(me, {
...
items: [
{
xtype: 'selectfield',
name: 'country',
label: 'Country',
store: countryStore,
valueField: 'code',
displayField: 'name',
placeHolder: 'Select your country'
}
]
});
}
});
答案 1 :(得分:0)
我最终解决了它:)
当我从控制器设置存储时,它可以工作:)
myView.items.items[9].setStore(CountryStore)
;