2016-02-25 16 views
1

У меня есть объект, который имеет некоторые значения, которые я хочу отобразить в combobox, который я добавляю к панели формы внутри цикла for.Extjs Combobox хранить значение от другого объекта

это содержимое объекта object но в моем комбобоксе я получить данные как [объект Object] вот что я сейчас делаю

 for(var i = 0; i < data.length ; i++) 
{ 
    console.log('ad'); 

    var storeStates = new Ext.data.ArrayStore({ 
     fields: ['optionText'], 

     data : [data[i].data.selectOptions.list[i].optionText] 
    }); 

    var cb = new Ext.form.ComboBox({ 
     fieldLabel: data[i].data.name, 
     hiddenName: 'fieldTypeName', 
     id: data[i].data.name.toString(), 
     valueField: 'optionText', 
     displayField: 'optionText', 
     typeAhead: true, 
     allowBlank: false, 
     mode: 'local', 
     selectOnFocus: true, 
     triggerAction: 'all', 
     emptyText: 'Survey Field Type', 
     disabled: this.existingField, 
     width: 190, 
     store: storeStates, 
     listeners: { 
      'select': function (combo, newValue, oldValue) { 

      } 
     } 



    }); 

    Ext.getCmp('survey-field-form').add(cb); 
//Ext.getCmp('survey-field-form').doLayout(); 


console.log('added'); 

}

ответ

0

Вы должны изменить свой магазин определение от Ext.data.ArrayStore до Ext.data.Store & данных в data[i].data.selectOptions.list

var storeStates = new Ext.data.Store({ 
     fields: ['optionText'], 
     data : data[i].data.selectOptions.list 
    }); 
+0

когда я делаю, как у сказал, я получаю эту ошибку «Uncaught TypeError: не удаюсь прочитать свойство„readRecords“неопределенный» –

+0

, в какой версии вы используете –

+0

На основе вашего объекта я воспроизвел его здесь https://fiddle.sencha.com/#fiddle/169c –

0

Я думаю, вам нужно определить ваш магазин, как, что, чтобы получить правильное отображение:

var storeStates = new Ext.data.JsonStore({ 
        data: data[i].data.selectOptions.list, 
        fields: [{name: "optionText", type: "string"}] 
}); 
0

Я решил проблему, создав читателя и магазин и толкая данных в хранилище, а затем загружаются в магазин, как этот

// create a Record constructor: 
      var rt = Ext.data.Record.create([ 
       {name: 'optionValue'}, 
       {name: 'optionText'} 
      ]); 
      var myStore = new Ext.data.Store({ 
       // explicitly create reader 
       reader: new Ext.data.ArrayReader(
        { 
         idIndex: 0 // id for each record will be the first element 
        }, 
        rt // recordType 
       ) 
      }); 
      var myData = []; 

      for(var j = 0; j < data[i].data.selectOptions.list.length; j++) 
      { 

       var optionText = data[i].data.selectOptions.list[j].optionText.toString(); 
       var optionValue = data[i].data.selectOptions.list[j].optionValue.toString(); 

       myData.push([optionValue, optionText]); 

      } 

      myStore.loadData(myData); 

Надеется, что это помогает кто-то еще

Смежные вопросы