2012-06-21 70 views
0

我在道場下面的代碼創建一個ComboButton與相關菜單的幾個的MenuItems:道場CompoButton - 其功能菜單項問題的onClick事件

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

我需要爲每個菜單項的的onClick函數傳遞testfunc中的不同變量。特別是數組[i] [「Id」],它是一個包含10個json對象的數組。通過上面的代碼,在所有MenuItems的所有testfunc函數中傳遞的參數是最後一個。

是否有可能通過對每個菜單項的正確數組[I] [ 「ID」]值

MenuItem0 - >的onClick:testfunc(數組[0] [ 「ID」])

MenuItem1 - >的onClick:testfunc(陣列[1] [ 「ID」])

MenuItem2 - >的onClick:testfunc(陣列[2] [ 「ID」])

感謝

回答

2

我已經找到了解決我的問題,我想我應該分享。

該問題是通過在menuItem的onClick事件的testfunc中使用「this」標記傳入參數來解決的,例如,

var menuItem1 = new MenuItem({ 

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

       label: "Option"+i,     

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