Ce que j'ai est un seul menu dijit.Menu qui contient les objets dijit.MenuItem avec des étiquettes 1 - 9. Il est connecté à une grille de type sudoku de 81 'noeuds' (parce qu'il y en a tellement, je ne m'occupe pas des id individuels, je les collectionne simplement avec dojo.query ('leur-nom-classe-css')). C'est le code que j'utilise à l'intérieur d'un widget pour instancier le menu contextuel et ses éléments de menu.Dojo Popup Menus - Connectez un événement d'élément de menu à plusieurs éléments 'triggering'
var contextMenu = new dijit.Menu({targetNodeIds:dojo.query(".sudokuNode"), leftClickToOpen:true});
for(var i = 1; i <= 9; i++) {
contextMenu.addChild(new dijit.MenuItem({
label:i,
onClick: function(evt) {
//??
}
}));
};
contextMenu.startup();
Ce que je suis en train de faire est d'avoir le nœud qui est cliqué, et ouvre ensuite un menu contextuel/contexte, être rempli de la valeur (1-9) choisis parmi les MenuItems du menu contextuel.
Mon problème est que je ne sais pas comment « savoir » qui des 81 noeuds a été le seul à déclencher l'événement oncontextmenu, et je ne sais pas comment référencer ce noeud dans la méthode « onClick » déclarée dans la élément du menu.
Toute aide démontrant comment référencer le nœud appelant dans ce contexte serait appréciée! Si ce n'est pas assez d'information, laissez-moi savoir ce que je peux faire d'autre pour expliquer mon problème!
Eh bien, le problème reste que je veux que le onClick se produise quand je sélectionne l'élément de menu. Le evt.target est le menuItem lui-même et le widget qui l'entoure est le menu ... aucun de ceux qui me donne un moyen d'accéder au nœud qui a été cliqué (que je connais) ... – Dfowj
Le nœud sur lequel vous avez cliqué sera un nœud interne du modèle MenuItem, vous risquez de ne pas obtenir ce que vous attendez. Cependant, vous pouvez choisir dojo.connect à l'événement DOM 'onclick' (N.B. pas 'onClick' qui est une méthode de widget) à la place donc vous avez l'événement à inspecter? Vous devrez peut-être créer un lien vers un exemple de cette grille que vous avez décrite car je ne peux pas tout à fait l'imaginer. –