Bonjour,

Voilà je confronté à un petit problème en ce moment concernant l'attachement d'une fonction qui prend en paramètre un objet à l'événement onClick.

Très concrètement, voici ce que je fais :

Je crée mon élément <li>, je lui ajoute un texte avec innerHTML et ensuite j'aimerais attacher myFunction() qui prend en paramètre un objet du genre -> objet = { ... }.
Voici le code que je fais et ensuite je vous explique le problème auquel je suis confronté :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
item = domConstruct.create('li'); 
domAttr.set(item, 'innerHTML', structure.label);
domAttr.set(item, 'onClick', 'this.myFunction('+structure+')');
Tout se passe bien jusqu'à l'attachement de la fonction au onClick de mon item, l'erreur est celle-ci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
SyntaxError: missing ] after element list
this.myFunction([object Object])
Ce qui coince, c'est la variable structure (qui contient un objet) que je passe en paramètre. Je pense que le problème vient plutôt de la syntaxe et donc de ma façon d'écrire 'this.myFunction('+structure+')'.
J'ai cependant essayé diverses façons mais j'ai toujours ce problème.

Par contre, ceci fonctionne bien mais exécute directement la fonction du onClick sans devoir cliquer sur le label finalement :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
item = domConstruct.create('li');
domAttr.set(item, 'innerHTML', structure.label);
domAttr.set(item, 'onClick', this.myFunction(structure));
Donc si en faisant que le code ci-dessus, le code s'exécute correctement, cela ne peut je pense venir que de la façon d'écrire cette instruction.

Sinon, j'avais tenté de faire ceci mais ça n'ajoute pas le onClick à mon item:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
item = domConstruct.create('li');
domAttr.set(item, 'innerHTML', structure.label);
domAttr.set(item, 'onClick', function(){ 
	this.myFunction(structure);
        }
);
Voilà, en espérant que quelqu'un puisse m'éclairer sur mon problème,
Bien à vous,
Renaud.