2014-09-04 76 views
0
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),我需要为这个商店创建模型。我的尝试是创建两个jsonarray模型

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' }, 


     ] 
    } 
}); 

Wheth呃我正确地配置了模型。我收到了店为空

回答

1

使用协会:) http://docs.sencha.com/touch/2.3.1/#!/api/Ext.data.association.Association

在这种情况下,我将有2个的hasMany协会这样的模式:

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自动生成。

阅读有关协会。

+1

感谢的人其工作。现在我对关联有了清晰的认识。 :) – 2014-09-05 05:38:19

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

知道一个有效的配置选项“模式”的字段。

  • 据我所知,在ExtJS或Sencha Touch中没有可用的“父模型”。
  • 据我所知,有没有可能有两个店于一体。

你可以只用一个电话像我下面的例子中服务器负载两个(或更多)存储:

firststore.on('load',function() { 
    secondstore.loadRawData(firststore.getProxy().getReader().rawData); 
}); 
firststore.load() 

如果你想给firststore服务器url和数据的root那进入第一个商店,并且secondstore将具有进入第二商店的数据的root

请注意,如果零个记录进入第一家店的第二家门店将不会被填补,并适当地选择你的商店。

如果您的商店可以是唯一的空店,也许你会必须通过Ext.data.Request得到RAWDATA并将其加载到所有门店之后。