我想根据用户的网址更改我的项目视图中的值。 目前,我有一个商店类,使用loadStore方法动态加载url。
Ext.define('store.app.appStore', {
extend : 'store.Store'
, model : 'model.app.appModel'
, alias : 'widget.app-appstore'
, proxy : {
type : 'rest'
, url : ''
, reader : {
type : 'json'
}
}
, loadStore : function(id) {
this.getProxy().url = app.getApplication().getAppUrl();
console.log(this.getProxy().url);
this.load({});
}
});
一个控制器根据id加载url,然后在启动时用数据更新我的表单。
Ext.define('controller.app.appController', {
extend : 'Ext.app.Controller',
refs :
{ref : 'appView', selector : 'app-appview'}
],
stores : ['app.appStore'],
init : function() {
this.control({
'app-appview' : {
selectionchange : this.onStartUp
}
});
},
onStartUp : function() {
this.getStore('app.appStore').loadStore();
this.getAppView().updateForm({PARAMETER});
}
但是,我在解决如何为我正在加载的数据分配变量时遇到问题,因此在我的updateForm()方法中,我会用数据替换{(PARAMETER)}。
该模型如下所示:
Ext.define('model.app.Summary', {
extend : 'Ext.data.Model',
fields : [
'id', 'name', 'address', 'phone', 'optionOne', 'optionTwo'
],
getId : function() {
return this.get('id');
},
getName : function() {
return this.get('name');
},
getAddress : function() {
return this.get('address');
},
getPhone : function() {
return this.get('phone');
},
getOptionOne : function() {
return this.get('optionOne');
},
getOptionTwo : function() {
return this.get('optionTwo');
},
});
有什么建议吗?
答案 0 :(得分:1)
您需要在store load事件中完成updateForm。例如,在controller's init
中的load事件中添加一个监听器init: function () {
Ext.getStore('app.appStore').on('load', this.LoadFormData);
},
然后在LoadFormData方法中,您可以访问商店中加载的数据
LoadFormData: function (s) {
var value = s.data.items[0].get('myFieldFromStore');
//insert value where required here
}
答案 1 :(得分:0)
是的,你的代码必须有这样的地方:
var myObject = Ext.create('Ext.data.ArrayStore', {
model: 'model.app.Summary',
data: [['someid','somename', 'someaddress', 'somephone', 'someoptionOne', 'someoptionTwo']]
});
从您要存储的数据创建对象的位置。
在这个例子中, myObject是ArrayStore
,这意味着您可以在对象中存储多个项目,所有项目都包含已定义的字段。
假设您想获得name
myObject
属性
myObject.data.items[0].data.name
我不确定模型中的getWhatever()
方法。