2015-09-17 59 views
1

我有一個關聯模型商店,我需要將這個關聯模型的值包含到Sencha Touch的selectfield組件中。如何在Sencha Touch的selectfield中實現一個嵌套和關聯的model-json?

這裏我父模型:

Ext.define('x.customer.model.CustomerModel', { 
    extend: 'Ext.data.Model', 
    requires:[ 
     'x.customer.model.CustomerTemplateModel' 
    ], 
    config: { 
     useCache: false, 
     idProperty: 'id', 
     fields: [ 
      { 
       name: 'id', 
       type: 'string' 
      }, 
      { 
       name: 'address', 
       type: 'string' 
      }, 
      { 
       name: 'name', 
       type: 'string' 
      }, 
      { 
       name: 'type', 
       type: 'int' 
      } 
     ], 
     associations: [ 
      { 
       type: 'hasMany', 
       associatedModel: 'Survey.customer.model.CustomerTemplateModel', 
       ownerModel: 'Survey.customer.model.CustomerModel', 
       associationKey: 'templates', 
       autoLoad: true, 
       name: 'templates' 
      } 
     ] 
    } 
}); 

和兒童模式:

Ext.define('x.customer.model.CustomerTemplateModel', { 
    extend: 'Ext.data.Model', 
    requires:[], 
    config: { 
     useCache: false, 
     rootProperty: 'templates', 
     fields: [ 
      { 
       name: 'text', 
       type: 'string' 
      }, 
      { 
       name: 'value', 
       type: 'string' 
      } 
     ] 
    } 
}); 

店:

requires: ['Survey.customer.model.CustomerModel'], 

config: { 
    model: 'Survey.customer.model.CustomerModel', 

    proxy: { 
     type: 'ajax', 
     reader: { 
      type: 'json', 
      rootProperty: 'customers' 
     } 
    } 
} 

目前JSON有這樣的結構:

{ 
    "id": "00000001", 
    "address": "Antsy Road", 
    "name": "asfas", 
    "phone": "55555", 
    "openSurveys": 7, 
    "templates": [ 
    { 
     "text": "123", 
     "value": "Template 1" 
    } 
    ], 
    "type": 1, 
    "withSurveys": true 
}, 

如何實現數據包含在「模板」嵌套json的selectfield?

預先感謝您

回答

1

一旦你的店裝,如果你有一個custommer:

var templatesData = []; // What will be inserted to the ComboBox 
for (var i=0; i < custommers[0].get('templates').length; i++) { // Running threw the values and populating templatesData 
    var templateModel = custommers[0].get('templates')[i]; 
    var templateCombo = { 
      text: templateModel.data.text, 
      value: templateModel.data.value 
    }; 

    templatesData.push(templateCombo); 
} 
// Setting the values to the combobox 
Ext.getCmp('myCombo').setStore(Ext.create("Ext.data.Store", { 
    model: 'x.customer.model.CustomerTemplateModel', 
    data :templatesData 
})); 

這不是一個獨特的解決方案,你可以創建店面的新實例爲好。以下是關於如何設置組合框的「商店」屬性的更多信息:http://docs.sencha.com/extjs/4.1.3/#!/api/Ext.form.field.ComboBox-cfg-store

+0

並且在這種情況下,什麼是「myObject」? – inane

+0

「x.customer.model.CustomerModel」的一個實例 –

+0

對不起,我沒有得到它...... – inane

相關問題