【问题标题】:Getting data from Rally getSettingsFields - checkboxfield从 Rally getSettingsFields 获取数据 - 复选框字段
【发布时间】:2013-07-22 23:41:48
【问题描述】:

我最近发布了关于在 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”,当我返回设置选项卡时再次取消选中。这一切都可以,但是当我在未选中该框的情况下保存设置时,该设置仍保持为“真”。

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

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

【问题讨论】:

    标签: javascript extjs checkbox rally


    【解决方案1】:

    显然,设置选项卡正在返回一个字符串,因此 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().boxes 中的一个字符串。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-22
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      相关资源
      最近更新 更多