如何将值传递给extjs中的组合框

时间:2017-09-19 20:44:42

标签: extjs

如何将商店数据传递到ComboBoX中存储

hours_ds: [

    [0, '12AM'], [1, '1AM'], [2, '2AM'], [3, '3AM'],
    [4, '4AM'], [5, '5AM'], [6, '6AM'], [7, '7AM'],
    [8, '8AM'], [9,'9AM'], [10,'10AM'], [11,'11AM'],
    [12, '12PM'], [13, '1PM'], [14, '2PM'], [15, '3PM'],
    [16, '4PM'], [17, '5PM'], [18, '6PM'], [19, '7PM'],
    [20, '8PM'], [21,'9PM'], [22,'10PM'], [23,'11PM']
],
  {
     xtype: 'combo',
     name: 'startHourCombo',
     id: 'startHourCombo_cb',
     queryMode: 'local',
     maxWidth: 80,
     columnWidth: 0.2,
     store: //how to pass my hours_ds values to this combo
     selectOnFocus: true,
     forceSelection: true,
     triggerAction: "all",
     typeAhead: false,
     valueField:'id',
     displayField: 'name'

}

2 个答案:

答案 0 :(得分:3)

您需要先创建商店,然后将该商店传递到您的组合商店。

我在这里是工作代码。

这里创建一个商店并设置为变量状态。然后将这些状态称为组合框存储。

var states = Ext.create('Ext.data.Store', {
    fields: ['abbr', 'name'],
    data : [
        {"abbr":"AL", "name":"Alabama"},
        {"abbr":"AK", "name":"Alaska"},
        {"abbr":"AZ", "name":"Arizona"}
    ]
});

// Create the combo box, attached to the states data store
Ext.create('Ext.form.ComboBox', {
    fieldLabel: 'Choose State',
    store: states,
    queryMode: 'local',
    displayField: 'name',
    valueField: 'abbr',
    renderTo: Ext.getBody()
});

检查小提琴。 Fiddle

答案 1 :(得分:0)

尽管可以将数组引用传递给Combobox中的存储,如此Fiddle https://fiddle.sencha.com/#view/editor&fiddle/26vi所示,但是良好的做法是在View Model中声明存储然后将其绑定到存储配置中组合框。这将使代码具有声明性,并且如果需要,还允许重用存储。

可以通过数据配置在商店中对数据进行硬编码。请参阅http://docs.sencha.com/extjs/6.5.1/classic/Ext.data.Store.html