Bonjour
J'ai un objet qui est composé de deux autres objets (dossier et document). Pour d'autres applications, j'ai besoin que dossier et document reste indépendant.
Sur un clic de dossier, je cherche à afficher les documents associés, donc dans mon objet dossier, j'ai une référence à document ce qui me permet, en théorie d'appeler une fonction de document depuis dossier
Seulement, ça ne fonctionne pas.
J'ai essayé avec une simple variable, elle reste undefined pour l'objet dossier, alors que le code html de document est accessible depuis dossier (voir les alert du code)
Comment faire pour appeler une fonction ou récupérer le contenu d'une variable d'un autre objet associé ?
Merci à ceux qui pourront m'aider
Voici le code très allégé
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> </head> <script type="text/javascript" >
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 Object.defineProperty(Object.prototype, "gest_dossier_document", { value: function( ) { this.div_dossier = $('<div id="dos">Dossier</div><br/><br/>').appendTo($(this)); this.div_contenu = $('<div id="im">Document</div>').appendTo($(this)); // Les objets dos et im sont liés car une action sur dos exécutent une fonction selection sur im $("#im").gest_di_document({ }); $("#dos").gest_di_dossier({ liste_documents_associes : $("#im") }); }, enumerable : false }); Object.defineProperty(Object.prototype, "gest_di_dossier", { value: function( params ) { var arguments = $.extend({ liste_documents_associes : null }, params || {} ); var that = this; $('<div style="color:red;">Erreur</div>').appendTo($(this)); this.liste_documents_associes = arguments.liste_documents_associes; // Ce qui pose problème alert(that.liste_documents_associes.html()); alert(that.liste_documents_associes.toto); that.liste_documents_associes.selection(that); }, enumerable : false }); Object.defineProperty(Object.prototype, "gest_di_document", { value: function( ) { $('<div style="color:red;">Erreur</div>').appendTo($(this)); this.toto = 'test'; this.selection = function(obj) { alert('selection'); // Enumeration de mes documents et affichage } }, enumerable : false });
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 </script> <div id="test"></div> <script type="text/javascript"> $(function(){ $("#test").gest_dossier_document({ }); }); </script>
Partager