0

相関するメニューのいくつかの MenuItems を持つ ComboButton を作成する dojo に次のコードがあります。

    testfunc = function (input) {
                                //Code that uses input
            }

            var menu = new Menu({
                id: "saveMenu"
            });
            //array has 10 json objects and each object has an "Id" field
            for(var i=0; i<10; i++) {

            var temp = array[i]["Id"];

            var menuItem1 = new MenuItem({
                label: "Option"+i,                
                onClick: function() { testfunc(temp); }
            });

            menu.addChild(menuItem1);
            }

            var comboButton = new ComboButton({
                optionsTitle: "Options",    
                label: "Combo",
                dropDown: menu,
 --->         onClick:function(){ console.log("Clicked ComboButton"); }
            }, "combo");

            comboButton.startup();
            menu.startup();

testfunc で異なる変数を渡すには、各 MenuItem の onClick 関数が必要です。具体的には、10 個の json オブジェクトを持つ配列である array[i]["Id"] の値。上記のコードでは、すべての MenuItem のすべての testfunc 関数で渡されるパラメーターは最後のパラメーターです。

各MenuItemに正しい配列[i] ["Id"]値を渡すことは可能ですか

すなわち

MenuItem0 -> onClick: testfunc(array[0]["Id"])

MenuItem1 -> onClick: testfunc(array[1]["Id"])

MenuItem2 -> onClick: testfunc(array[2]["Id"])

.

.

.

ありがとう

4

1 に答える 1

2

問題の解決策を見つけたので、それを共有する必要があると思います。

この問題は、menuItem の onClick イベントの testfunc に「this」トークンを使用してパラメーターを渡すことで解決されました。

var menuItem1 = new MenuItem({

                id: array[i]["Id"],

                label: "Option"+i,                

                onClick: function() { testfunc(this.id, this.label); }
            });
于 2012-06-28T07:55:13.570 に答える