Dojo CompoButton - MenuItem问题的onClick事件及其功能

时间:2012-06-21 20:05:42

标签: dojo

我在dojo中创建了一个包含相关菜单的几个MenuItem的ComboButton的代码:

    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();

我需要为每个MenuItem使用onClick函数在testfunc中传递一个不同的变量。具体是array [i] [“Id”]的值,它是一个包含10个json对象的数组。使用上面的代码,在所有MenuItems的所有testfunc函数中传递的参数是最后一个。

是否可以为每个MenuItem传递正确的数组[i] [“Id”]值

MenuItem0 - &gt; onClick:testfunc(array [0] [“Id”])

MenuItem1 - &gt; onClick:testfunc(array [1] [“Id”])

MenuItem2 - &gt; onClick:testfunc(array [2] [“Id”])

由于

1 个答案:

答案 0 :(得分:2)

我找到了解决问题的方法,我想我应该分享一下。

通过使用“this”标记传递menuItem的onClick事件的testfunc来解决问题,例如。

var menuItem1 = new MenuItem({

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

                label: "Option"+i,                

                onClick: function() { testfunc(this.id, this.label); }
            });