Appel de fonction entre deux objects séparés
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:
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:
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:
1 2 3 4 5 6 7 8
| </script>
<div id="test"></div>
<script type="text/javascript">
$(function(){
$("#test").gest_dossier_document({ });
});
</script> |