큰 트리에서 여러 개의 오른쪽 클릭 메뉴를 정의하려고합니다. (dojo 1.8 사용). 20 개 이상의 다른 유형의 데이터 항목이 트리에 있습니다. 이 데이터 항목 유형마다 특정 마우스 오른쪽 버튼 클릭 메뉴가 있습니다. 에서 설명한대로 Menu의 'selector'를 사용하여 TreeNode에 메뉴를 연결하려고했습니다. 각 treeNode에 유형 이름이있는 클래스를 추가하고 이에 따라 메뉴 선택기를 정의했습니다. 20 + 메뉴의Dojo : 큰 트리에서 마우스 오른쪽 버튼으로 여러 번 누르는 메뉴
하나 :
var personMenu = new dijit.Menu({
targetNodeIds: ["theTree"],
selector: ".type_person",
menutype: 'person'
});
personMenu.addChild(new dijit.MenuItem({
label: "person properties",
onClick: function(){ createDialog('edit');}
}));
클래스 이름으로 추가 유형을 가진 TreeNode를 만들기 :
_createTreeNode: function(args){
//Logger.info("_createTreeNode "+args.item.type+";");
args.className = 'type_'+args.item.type;
console.dir(args);
var node = new dijit._TreeNode(args);
내 문제 트리에서 사용이 제대로 작동하지 않는다는 것입니다 : A 유형의 일부 treeNode에 대한 메뉴가 모든 하위에 표시되는 경우가 있습니다. 그것은 메뉴 정의의 순서와 관련이있는 것 같습니다. 다른 사람들에게 부모로 사용되는 데이터 항목에 대한 메뉴를 먼저 정의하면 문제가 조금 줄어 듭니다. 불행히도 부모 및/또는 다른 사람의 자식이 될 수있는 데이터 항목이있어 그 유형은 트리의 모든 깊이에 나타날 수 있으므로 메뉴를 만드는 순서를 변경하면 문제를 해결하기에 충분하지 않습니다.
내가 잘못하고 있니? 이 경우를 처리 할 '선택자'트릭이 있습니까?