从Rally获取数据getSettingsFields - checkboxfield

时间:2013-07-19 21:01:34

标签: javascript extjs checkbox rally

我最近发布了关于将组合框放入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或设置的任何语法],以便稍后过滤网格。有人知道我做错了吗?

1 个答案:

答案 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,因此下次有人打开设置菜单时将检查该框。