我最近发布了有关将组合框放入 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 或设置采用的任何语法],以便稍后可以过滤网格。有人知道我做错了什么吗?
最佳答案
很明显,设置选项卡返回一个字符串,因此“true”是从 inputValue 返回的,而不是 bool 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
中的字符串。
我想保留这些框以记住它们之前是否被检查过,所以这就是行检查的地方: this.getSettings().boxes.split(',').indexOf('one') > - 1
来自。如果设置中包含字符串“one”,则意味着索引将大于 1,因此选中将为 true,因此下次有人打开设置菜单时将选中该框。
关于javascript - 从 Rally getSettingsFields 获取数据 - checkboxfield,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17755427/