2015-05-21 2 views
0

У меня есть combobox, значения которого мне нужно заполнить через форматированную строку json, которую я получаю с помощью вызова AJAX.Значения не добавляются в combobox динамически

Вот строка, которую я извлеченного (хранится в data)

{ 
    "a2m": 
    [ 
     "a2mMeeting", 
     "sugar" 
    ] 
} 

Поле со списком должен содержать a2m (это единственное имя в строке, как сейчас)

Вот что я был пытаясь:

подход 1:

this.initAjaxCall = Ext.Ajax.request({ 
     url : 'indigo/restproxy/get/v1/applications/list', 
     method:'GET', 
     scope : this, 
     success : function(result, request) { 
      var data = Ext.decode(result.responseText); 
      Object.keys(data).forEach(function(key) { 
       console.log(key); 
       Ext.getCmp('appCombo').getStore().add({appName : key}); 
      }) 
     } 
}); 

this.appcombo = Ext.create('Ext.form.field.ComboBox', { 
     id : 'appCombo', 
     store: this.appStore 
}); 

this.appStore = Ext.create('Ext.data.Store', { 
    fields : [ 
    { 
     name : 'appName', 
     type : 'string' 
    } 
    ] 
}); 

подход 2:

this.appStore = Ext.create('Ext.data.Store', { 
     fields: ['appName'], 
     proxy: { 
      type: 'ajax', 
      url: 'indigo/restproxy/get/v1/applications/list', 
      method : 'GET' 
     }, 
     listeners: { 
      load: function(store, records, successful, eOpts) { 
       store.insert(0, { 
        'appName' : 'yellow' //Trying to populate randomly using this method. 
       }) 
      } 
     } 
    }) 


this.appcombo = Ext.create('Ext.form.field.ComboBox', { 
    id : 'appCombo', 
    store: this.appStore 
}); 

В обоих случаях выпадающий не загружает никакого значения, и я не в состоянии видеть любое значение в раскрывающемся меню.

EDIT 1: Когда я напечатал store.getCount() в консоли после добавления одного элемента, значение отображается как 1 (отмечено добавлением двух элементов, и оно показывает 2). Это означает, что значения добавляются в хранилище, но не отображаются в выпадающем меню combobox. Просьба предложить, как это решить.

РЕШЕНИЕ:
Решение, как выясняется, был, добавив заявление queryMode: «местный». Я не понимаю, почему это создавало проблему. Любой, кто хочет пролить свет на это, может это сделать.

ответ

-1

Как вы доказали, магазин заселен. Однако вы не установили поле отображения в поле со списком.

this.appcombo = Ext.create('Ext.form.field.ComboBox', { 
    id : 'appCombo', 
    store: this.appStore, 
    displayField: 'appName' 
}); 

displayField: Базовое имя поля данных для привязки к этой ComboBox. По умолчанию: «текст»

valueField: имя базового значения данных для привязки к этому ComboBox. Значения по умолчанию соответствуют значению конфигурации displayField.

+0

Спасибо за помощь Алан. Я уже добавил это и попытался, но снова это не сработало. В любом случае проблема теперь решена путем добавления queryMode: «local». Я не знаю, почему это создавалось и выдавалось, хотя –

+0

@ aayush_v20 Не уверен, зачем именно ему нужно установить queryMode. Мне не нужно добавлять его с вашим подходом 2 только к первому, поэтому я предполагаю, что он имеет какое-то отношение к тому, как вы загружаете данные в хранилище. –

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