2016-09-12 2 views
0

나는 성공적으로 수행 한 동적 항목이있는 트레이 메뉴를 구축 중입니다. 유일한 문제는 각 항목에 동적 클릭 이벤트를 설정할 수 없다는 것입니다. 나는 ShellJS을 사용하여 명령을 실행하고 있습니다. 다음은 내 코드 예제입니다 : 내 메뉴 항목이 성공적으로 생성되는함수에 동적 문자열 바인드 JS

var menu = []; 
for(index in file) { 
    menu.push(
    { 
     label: file[index]['name'], 
     click: function() 
     { 
      exec('cd ' + file[index]['path'], function(code, stdout, stderr) { 
       console.log('Exit code:', code); 
       console.log('Program output:', stdout); 
       console.log('Program stderr:', stderr); 
      }); 
     } 
    }, //SampleCode 

는, 유일한 문제는 그것의 마지막 값을 사용하는 클릭 이벤트와는 "파일 [인덱스] [ '경로']는"지난 [인덱스를 말할 수 ] 값은 click 이벤트가있을 때마다 file [3] [ 'path']의 값을 사용하므로 click 이벤트가 해당 특정 메뉴에 대해 올바른 값 (filePath)을 사용하도록 함수에 값을 바인딩하는 방법 항목이 클릭되었습니다.

답변

1

좋아, 인터넷에서 많은 것을 검색 할 수없는 친구를 찾았는데 (그들은 몇 시간 동안 나를 도왔습니다.) 여전히 해결할 수 없었습니다. 마지막으로, 나는 무언가를 시도하고 그것은 효과가 있었다.

내 업데이트 된 코드 :

var menu = []; 
for(index in file) { 
    menu.push(
    {  
     label: file[index]['name'], 
     id: box[index]['path'], //**Added id parameter** 
     click: function(currentItem) { 

      console.log(currentItem.id) 
      // When click event is triggered it sends 
      // the current Menu Item as Object 
      // From that object I can access the 'id' 
      // example: currentItem.label will give the current items label. 
     } 
    }, //Sample Code