1

我最近发布了关于在 Rally 应用程序的设置中添加一个组合框的帖子,现在我试图弄清楚复选框在设置中是如何工作的。我认为它们会以类似的方式工作 [ish],但由于某种原因,这不是 [因此我再次出现在这个网站上的原因]。

我的复选框字段和 getSettingsField 函数现在看起来像这样:

getSettingsFields: function() {
    return [
        {
            xtype: 'fieldcontainer',
            defaultType: 'checkboxfield',
            items: [
                {
                    name: 'box1',
                    boxLabel: 'Box 1:',
                    inputValue: true,
                    value: true,
                    id: 'boxone'
                }
            ]
        }
    ];
}

在我的应用程序顶部,我还设置了以下默认设置:

config: {
    defaultSettings: {
        box1: true
    }
},

我在启动函数中为该复选框设置了 console.log() 的设置,发现该设置从“true”开始,但该复选框最初没有被选中。当我选中该框并保存设置时,设置保持为“true”,当我返回设置选项卡时再次取消选中。这一切都可以,但是当我在未选中该框的情况下保存设置时,该设置仍保持为“true”。

我尝试将 defaultSetting 更改为 false 只是为了进行测试,但我再次得到 box1 的“true”设置字段。我的日志记录行console.log('Setting: ' + this.getSettings());是每次加载应用程序和每次更改设置时向我显示每个设置的当前值。

目标是让复选框设置在应用程序的开头正确读取 [true / false 或设置出现的任何语法],以便稍后可以过滤网格。有人知道我做错了什么吗?

4

1 回答 1

0

显然,设置选项卡正在返回一个字符串,因此从 inputValue 返回“true”,而不是布尔真值。此外,值设置搞砸了,所以这就是我最终使用的:

config: {
    defaultSettings: {
        boxes: "check"
    }
},
...
getSettingsFields: function() {
    return [
        {
            xtype: 'fieldcontainer',
            defaultType: 'checkboxfield',
            items: [
                {
                    name: 'boxes',
                    boxLabel: 'Box 1:',
                    inputValue: "one",
                    checked: this.getSettings().boxes.split(',').indexOf('one') > -1,
                    id: 'boxone'
                },
                {
                    name: 'boxes',
                    boxLabel: 'Box 2:',
                    inputValue: "two",
                    checked: this.getSettings().boxes.split(',').indexOf('two') > -1,
                    id: 'boxtwo'
                }
            ]
        }
    ];
}

我了解到“名称”字段是一个通用字段,应该应用于设置面板中相互关联的所有复选框。'inputValue' 字段是返回到设置字段的字符串,每个都返回到this.getSettings().boxes.

我想保留这些框以记住它们之前是否被选中,所以这就是该行的checked: this.getSettings().boxes.split(',').indexOf('one') > -1来源。如果字符串 'one' 在设置中,这意味着索引将大于一,因此选中将为真,因此下次有人打开设置菜单时将选中该框。

于 2013-07-22T15:41:48.360 回答