我在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”])
等
由于
答案 0 :(得分:2)
我找到了解决问题的方法,我想我应该分享一下。
通过使用“this”标记传递menuItem的onClick事件的testfunc来解决问题,例如。
var menuItem1 = new MenuItem({
id: array[i]["Id"],
label: "Option"+i,
onClick: function() { testfunc(this.id, this.label); }
});