2011-03-30 2 views
0

여러 중첩 메뉴 라디오 그룹이 있는데 부모 메뉴에서 중첩 된 메뉴 그룹을 선택 해제하는 방법이 궁금합니다.ExtJS 메뉴 그룹, 원격 버튼으로 선택 해제하는 방법

예를 들어 다른 Ext.menu.Menu 개체의 메뉴가있는 항목이 추가 된 Ext.menu.Menu 개체가 있습니다. 이들 각각은 별도의 그룹으로되어 있습니다. 다른 버튼을 클릭하여 해당 그룹을 모두 선택 취소하고 싶습니다.

내가 가지고있는 시나리오는 이러한 중첩 된 옵션을 사용할 수 있으며 옵션을 다시 설정하려는 선택 취소 버튼이 있다는 것입니다.

저는 ExtJS 버전 3.3.1을 사용하고 있습니다.

옵션이 동적으로 생성되고 여러 항목이 같은 그룹을 공유합니다. 중첩 된 깊이로 그룹화됩니다.

예 메뉴 : 없음 테스트> 아직 테스트> 테스트 테스트가 다시> 아직

그렇게 없음, 시험, 시험 다시, 그리고 또 다른 테스트 그룹 "수준 1"에없는 또 다른 테스트를 을 테스트 계속 더 테스트, 계속 테스트는 "level2"그룹에 있습니다. 더 많은 테스트는 "level3"그룹에 있습니다.

Level 2 및 Level 3의 선택을 취소하려면 None 단추를 누르고 싶습니다. level1 그룹에 대해 확인하는 것이 좋습니다.

답변

0

Menu 클래스의 cascade 함수와 함께 청취자를 단추에 추가하려고 할 수 있습니다. cascade은 중첩 된 메뉴에서 원하는 동작 유형처럼 보이는 컨테이너/구성 요소 계층 구조 아래에서 작동합니다.

button.addListener("click", function() { 
    topMenu.cascade(function() { 
     //'this' refers to the current component as we cascade down. 
     //check this components xtype 
     if (this.getXType() === "menu") { 
      //do the work you want to do 
     } 
    }); 
}); 

코드를 전혀 보지 않아도 이것보다 훨씬 설명하기 어렵습니다.

0

마치 재귀 적으로 메뉴를 탐색 할 수있는 것처럼 보입니다. 메뉴 항목을 선택 취소하면됩니다.

뭔가 같은 :

checkitem.on('checked', uncheckOthers); 

uncheckOthers = function(checkItem) { 
    var menu = checkItem.ownerCt; 
    uncheckMenu(menu, checkItem); 
} 

uncheckMenu = function(menu, leaveItemAlone) { 
    menu.items.each(function(item) { 
     if (item !== leaveItemAlone && item.setChecked) { 
      item.setChecked(false); 
     } 
     if (item.menu) { 
      uncheckMenu(item.menu); 
     } 
    } 
} 
관련 문제