2

チェックボックスの値を操作するのに問題があります。私の場合、チェックボックスの「変更」イベントはオブジェクトを返します。

{"val1":"member","val2":"book","val3":"journal","val4":"new_member","val5":"cds"}

上記のオブジェクトは、検索エンジンが次のように使用できるように変換する必要がありました。

{ member,book,journal,new_member,cds}

以下のコードブロックでそれを行いました:

var formcheckbox = this.getFormcheckbox();
formcheckbox.on('change', function(checkbox, value){

                var arr=[];

                for (var i in value) {
                    arr.push(value[i])
                };

                var wrd = new Array(arr);
                    var joinwrd = wrd.join(",");
                        var filter = '{' + joinwrd + '}';

                        //console.log(filter);

                //Ext.Msg.alert('Output', '{' + joinwrd + '}');

                });

問題は、「変更」イベントの出力 ({ member,book,journal,new_member,cds} を生成する「var フィルター」) を別の場所で使用したいことです。イベント全体を変数 (var output = “変更イベント”) にしようとしましたが、うまくいきません。

ばかげた質問かもしれませんが、私は初心者で、少し助けが必要です。

前もって感謝します、

トム

4

2 に答える 2

2

filterそれを使用する関数に渡すだけです。change何かを起こさせたい場合は、とにかくハンドラー内から呼び出す必要があります。

formcheckbox.on('change', function(cb, value){
    //...
    var filter = "{" + arr.join(",") + "}";
    useFilter(filter);
});


function useFilter(filter){
    // use the `filter` var here
}
于 2012-05-19T07:52:12.147 に答える
1

filterグローバル変数を作成して、必要な場所でいつでも使用できます。

// global variable for the search filter
var filter = null;

var formcheckbox = this.getFormcheckbox();
formcheckbox.on('change', function(checkbox, value){
    var arr = [],
    i,
    max;

    // the order of the keys isn't guaranteed to be the same in a for(... in ...) loop
    // if the order matters (as it looks like) better get them one by one by there names
    for (i = 0, max = 5; i <= max; i++) {
        arr.push(value["val" + i]);
    }

    // save the value in a global variable
    filter = "{" + arr.join(",") + "}";

    console.log(filter);
});
于 2012-05-19T07:32:22.807 に答える