demoAlerts({
itemstatus: [
{
item: "1",
name: "apple",
type: "fruit"
},
{
item: "2",
name: "pine",
type: "fruit"
}
],
deliverystatus: [
{
name: "james",
status: "yes"
},
{
name: "thomas",
status: "no"
},
]
});
我有两个数组(itemstatus和deliverystatus),我需要为这个商店创建模型。我试过的是
ParentModel:
Ext.define('test.model.ParentModel', {
extend: 'Ext.data.Model',
requires:['test.model.ItemModel','test.model.DeliveryModel'],
autoLoad: true,
config : {
fields : [ 'itemstatus', {
name : 'demostatuslist',
model : 'demoAlerts.model.ItemModel',
mapping : 'itemstatus'
},
'portalstatus', {
name : 'deliverystatus',
model : 'test.model.DeliveryModel',
mapping : ' deliverystatus'
}]
}
});
ItemModel
Ext.define('demoAlerts.model.ItemModel', {
extend: 'Ext.data.Model',
config: {
fields: [
{ name: 'item', type: 'string' },
{ name: 'name', type: 'string' },
{ name: 'type', type: 'string' }
]
}
});
DeliveryModel
Ext.define('demoAlerts.model.DeliveryModel', {
extend: 'Ext.data.Model',
config: {
fields: [
{ name: 'name', type: 'string' },
{ name: 'status', type: 'string' },
]
}
});
我是否正确配置了模型。我收到的商店是空的
答案 0 :(得分:1)
使用关联:) http://docs.sencha.com/touch/2.3.1/#!/api/Ext.data.association.Association
在这种情况下,我会有一个带有2个hasMany关联的Model,如下所示:
Ext.define('demoAlerts.model.ContainerModel', {
extend : 'Ext.data.Model',
requires : [
'demoAlerts.model.DeliveryModel',
'demoAlerts.model.ItemModel'
],
config : {
associations: [
{
type : 'hasMany',
model : 'demoAlerts.model.DeliveryModel',
associationKey : 'deliveryStatus',
name : 'deliveryStatus',
autoLoad : true // this is very important
},
{
type : 'hasMany',
model : 'demoAlerts.model.ItemModel',
associationKey : 'itemStatus',
name : 'itemStatus',
autoLoad : true // this is very important
}
]
}
});
然后使用商店SomeStore绑定到ContainerModel。
重要事项SomeStore中的每条记录都有deliveryStatusStore和itemStatusStore AUTOGENERATED。
了解关联。
答案 1 :(得分:0)
http://docs.sencha.com/touch/2.3.1/#!/api/Ext.data.Field都没有 也不是http://docs.sencha.com/extjs/5.0/apidocs/#!/api/Ext.data.field.Field
知道字段的有效配置选项“model”。
您只需对服务器进行一次调用即可加载两个(或更多)商店,如下例所示:
firststore.on('load',function() {
secondstore.loadRawData(firststore.getProxy().getReader().rawData);
});
firststore.load()
您将firststore
服务器url
以及进入第一家商店的数据的root
提供给secondstore
root
Ext.data.Request
进入第二家商店的数据。
请注意,如果零记录进入第一家商店,并且选择适当的商店,则不会填写第二家商店。
如果您的任何商店可能是唯一的空店,也许您必须通过{{1}}获取rawdata并在之后将其加载到所有商店。