如何在Rally应用程序中添加ComboBox到设置齿轮菜单

时间:2013-07-16 20:23:35

标签: javascript combobox settings rally

目前我正在开发一个显示缺陷图表的应用程序。该图表将通过选择的复选框进行过滤,用户可以根据自己的需要进行更改。这些复选框位于应用程序的齿轮菜单中,位于“设置”下。在App.js中我有一个看起来像这样的函数:

getSettingsFields: function() {
    return [
        {
            xtype: 'fieldcontainer',
            fieldLabel: 'States',
            defaultType: 'checkboxfield',
            items: [
                {...}
                ...
            ]
        }
    ];
}

此功能到目前为止工作正常,并显示我从代码中留下的项目[它们对问题不重要]。问题是,现在我想将ComboBox添加到具有自定义值的相同设置页面中。该框应该包含文本[Days,Weeks,Months,Quarters],它将进一步过滤哪些缺陷显示在图表中。我尝试将getSettingsFields函数更改为以下内容:

getSettingsFields: function() {
    var myStore = Ext.create('Ext.data.Store', {
        fields: ['value', 'range'],
        data: [
            {'value':'day', 'range':'Days'}, //test data for ComboBox
            {'value':'week', 'range':'Weeks'}
        ]
    });

    return [
        {
            xtype: 'combobox',
            fieldLabel: 'Date Range',
            store: myStore,
            displayField: 'range',
            valueField: 'value'
        },
        {
            xtype: 'fieldcontainer',
            fieldLabel: 'States',
            defaultType: 'checkboxfield',
            items: [
                {...}
                ...
            ]
        }
    ];
}

现在,当我运行应用程序并单击“设置”按钮时,一切都消失了 - 甚至是复选框的字段。任何解释为什么这不起作用将是非常有帮助的!

1 个答案:

答案 0 :(得分:1)

你基本上做的都是正确的 - 你只是偶然发现了一个非常微妙的错误。根本问题是,当设置面板由于包含存储而尝试克隆设置字段配置数组时,会发生无限递归。以下代码将解决此问题:

{
    xtype: 'rallycombobox',
    storeConfig: {
        fields: ['value', 'range'],
        data: [
            {'value':'day', 'range':'Days'}, //test data for ComboBox
            {'value':'week', 'range':'Weeks'}
        ]
    },
    storeType: 'Ext.data.Store',
    fieldLabel: 'Date Range',
    displayField: 'range',
    valueField: 'value'
}

它与你所拥有的基本相同,但使用了rallycombobox而传递了storeType和storeConfig以解决商店克隆问题。