1

最近、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 または設定が入ってくる構文] に読み取らせて、後でグリッドをフィルタリングできるようにすることです。誰かが私が間違っていることを知っていますか?

4

1 に答える 1

0

どうやら設定タブは文字列を返しているようです。そのため、ブール値の true 値ではなく、inputValue から「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

ボックスが以前にチェックされたかどうかを覚えておきたかったので、そこから行checked: this.getSettings().boxes.split(',').indexOf('one') > -1が来ました。文字列 'one' が設定にある場合、インデックスが 1 より大きいことを意味するため、checked は true になり、次回誰かが設定メニューを開いたときにボックスがチェックされます。

于 2013-07-22T15:41:48.360 に答える