2015-12-11 3 views
0

Я работаю в приложении Sencha Touch, и я хотел бы нажать на поле со списком, ранее отфильтрованное из магазина.Как установить поле выбора в Sencha Touch из массива?

var store = Ext.getStore('Surveys'); 
var templatesAvailable = []; 
store.filterBy(function (record) { 
    console.log(record.get('templateName')); 
    record.get('templateName'); --> I get value 
    templatesAvailable.push(record.get('templateName')); --> into the array 
}); 

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

this.getTemplateSelector

{ 
    xtype  : 'selectfield', 
    itemId  : 'selectSurveysTemplates', 
    cls   : 'filterbar-selectfieldplus', 
    displayField: 'value', --> here is the secret ;-) 
    valueField : 'id', 
    autoCreate : true 
    }, 

Что она должна быть правильный путь для реализации этого? Я тестировал различные варианты, но это не работает для меня ..

Заранее спасибо ..

+0

Поскольку Sencha Touch не имеет 'xtype: 'combobox'', я прав, что вы хотите использовать' xtype:' selectfield''? – Alexander

+0

Я отредактировал заголовок сообщения. Конечно, я использую «selectfield» .. спасибо! – inane

ответ

0

Как об этом один:

selectfield.setOptions(
    store.getRange().map(function(record) { 
     return { 
      text:record.get("templateName"), 
      value:record.get("templateName") 
     }; 
    }) 
); 

Это необходимо сделать следующее:

  • Selectfield.setOptions устанавливает значение Selectfield.options. Согласно документам, options принимает массив объектов со свойствами text и value, поэтому я думаю, setOptions принимает то же самое.
  • Store.getRange дает вам массив записей.
  • Array.map, который выполняет функцию и преобразует каждый элемент в массив ввода с использованием этой функции.

Voilà, вам нужно сделать.

+0

отладка 'record.get (" templateName ") показывает правильное значение, а в поле выбора я вижу длину массива, разделенную строками в этом случае 5, но я не вижу значений .. что я делаю неправильно? – inane

+0

@inane Вы не указали определение своего 'selectfield', поэтому это всего лишь предположение: вы могли бы определить нестандартный [' displayField'] (http://docs.sencha.com/touch/2.3. 1/#!/Api/Ext.field.Select-cfg-displayField), например. – Alexander

+0

Ну, для 'displayField: 'templateName', valueField: 'id',', вам нужно будет переключиться на 'return {templateName: record.get (" templateName "), id: record.get (" id ")} 'или подобное ... – Alexander

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