2014-01-06 18 views
0

3 항목이있는 메뉴가 있습니다. 특정 조건이 true 인 경우 페이지를 렌더링하기 전에 항목을 시뮬레이션하여 원하는 기본 동작을 설정하는 것과 같습니다. 내 메뉴를 동적으로 생성합니다.시뮬레이션 메뉴 항목 클릭

Store.each(function(n) { 
    var rec = n; 

     var menuItem = new Ext.menu.Item({ 
      text: rec.data.name, 
      value: rec.data.url, 

     }); 

     Menu.add(menuItem); 

     //if some condition set item as if it was clicked(selected) 

}); 

메뉴 안에있는 특정 항목을 클릭 한 것처럼 활성화하고 싶습니다.

+0

실제로 메뉴 항목을 클릭하거나 강조 표시하려고합니까? – lmno

+0

선택한 것처럼 클릭하십시오 – Jacob

+0

수정 된 답변을 참조하십시오. – lmno

답변

0

.fireEvent() 메서드를 사용하는 경우 메뉴 항목에서 click 이벤트를 시작할 수 있습니다.

그래서, 또한

if(some condition){ 
    menuItem.fireEvent('click'); 
} 

,이 이벤트 여기

var menuItem = new Ext.menu.Item({ 
    text: "menu Item", 
    listeners:{ 
     click:function(){ alert("you clicked the menu item"); } 
    } 
}); 

을 잡으려고는 menuItem에 수신기를 필요가 작동 예입니다 : 마지막으로 http://jsfiddle.net/9Lpg7/

, 나는 것 그것을 추가하고 싶습니다. fireEvent() 완전히 필요하지는 않습니다. menuItem은 handler 설정을 가지고 있기 때문에 다른 곳에서 함수를 정의하고 조건이 true 일 때 menuItem 핸들러로 사용할 수 있습니다.

var myClickFunction = function(){ alert("cooler way"); } 

var menuItem = new Ext.menu.Item({ 
    text: "menu Item", 
    handler:myClickFunction 
}); 

if(some condition){ 
    myClickFunction(); 
} 
+0

죄송 합니다만 이벤트를 발생시키지 않습니다. – Jacob

+0

문제는 메뉴 아래에 버튼이 설정되어 있다는 것입니다. – Jacob

+0

버튼 아래에있는 것이 왜 문제가되는지 자세히 설명해 주시겠습니까? 언급 된 두 번째 방법을 사용하는 경우 메뉴 (또는 menuItem)의 위치는 중요하지 않습니다. – lmno