我最近发布了关于将组合框放入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或设置的任何语法],以便稍后过滤网格。有人知道我做错了吗?
答案 0 :(得分:0)
显然,settings选项卡返回一个字符串,因此从inputValue返回“true”,而不是布尔值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'
}
]
}
];
}
我了解到'name'字段是一个通用字段,应该应用于设置面板中彼此相关的所有复选框。 'inputValue'字段是设置字段的返回字符串,每个字段都返回this.getSettings().boxes
中的字符串。
我想保留这些框以便记住它们之前是否被检查过,所以这就是checked: this.getSettings().boxes.split(',').indexOf('one') > -1
行的来源。如果字符串'one'在设置中,则表示索引将大于1,因此检查将为true,因此下次有人打开设置菜单时将检查该框。