Javascript 从Rally getSettingsFields-checkboxfield获取数据

Javascript 从Rally getSettingsFields-checkboxfield获取数据,javascript,extjs,checkbox,rally,Javascript,Extjs,Checkbox,Rally,我最近发布了一篇关于在拉力赛应用程序的设置中加入组合框的帖子,现在我正试图弄清楚复选框在设置中是如何工作的。我认为它们的工作原理类似[ish],但出于某种原因,它不是[因此我再次出现在这个网站上的原因] 我的复选框字段和getSettingsField函数现在如下所示: getSettingsFields: function() { return [ { xtype: 'fieldcontainer', defaultTyp

我最近发布了一篇关于在拉力赛应用程序的设置中加入组合框的帖子,现在我正试图弄清楚复选框在设置中是如何工作的。我认为它们的工作原理类似[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
    }
},
I console.log()在启动函数中设置了该复选框,并发现该设置从“true”开始,但该复选框最初未被选中。当我选中该复选框并保存设置时,设置将保持为“true”,当我返回到“设置”选项卡时,再次取消选中。这一切都没问题,但当我保存设置时未选中该框,设置仍然保持为“true”

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


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

显然,设置选项卡返回的是字符串,所以“true”是从inputValue返回的,而不是布尔值。此外,值设置会把事情搞得一团糟,因此我最终使用了以下内容:

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().box
中的字符串

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