我想在一棵大樹上定義多次右擊菜單。 (使用道場1.8)。 我在樹中有20多種不同類型的數據項。對於每個這種數據項類型,都有一個特定的右鍵單擊菜單。 我嘗試用菜單的「選擇器」將菜單附加到TreeNode,如http://dojotoolkit.org/reference-guide/1.9/dijit/Menu.html#attaching-to-multiple-nodes中所述。我已經爲每個treeNode添加了一個具有該類型名稱的類並相應地定義了菜單選擇器。Dojo:在一棵大樹上多次右擊菜單
一個20 +菜單:
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的創作與加入的className類型:
_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的菜單有時會出現在它的所有子節點上。這似乎與菜單定義的順序有關。如果我首先定義用作其他父項的數據項目的菜單,則會出現一些問題。不幸的是,我得到的數據項可以是其他父項和/或子項的數據項,這些類型可能會出現在樹的所有深度處,因此更改菜單創建的順序不足以解決問題...
我做錯了什麼?是否有任何'選擇器'技巧來處理這種情況? (因爲樹是相當大的,我寧願避免使用樹節點的ID)
感謝您的幫助,