Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Ecoute d'un event d'une classe [ JavaScript Orienté objet (POO) / Classes ] (guepard53)

mardi 3 juin 2008 à 16:42:25 | Ecoute d'un event d'une classe

guepard53

Bien le bonjour,

j'ai fait une classe JS permettant d'afficher une datagrid avec paging, tri, ajout, suppression, edition, ...
En gros, je passe un array à mon instance de classe et la grid se dessine avec les différents boutons permettant de trier, éditer/supprimer une ligne, ...

Seulement je ne suis pas sûr d'avoir fait cela proprement pour ce qui est de l'édition par exemple.

Quand je clique sur le bouton d'édition sur une ligne de ma grid, ça remplace la ligne par une ligne d'édition (avec textboxes, combobox, ...) pour permettre de saisir les nouvelles valeurs pour ma ligne. Tout cela fonctionne bien.
Là où j'hésite, c'est quand on veut sauver les modifications (via le bouton save de la ligne d'édition).

Pour le moment, j'appelle une méthode editLine() dans laquelle j'appelle une méthode de ma classe et à laquelle je passe un array contenant les nouvelles valeurs ainsi que l'id de la ligne (càd tout ce qu'il faut pour pouvoir modifier la ligne dans ma DB).
Et hors de ma classe, j'implémente la méthode pour récupérer le tableau et l'id. Je me demande si cette façon de faire (qui fonctionne) est propre et orientée objet...? J'aurais préféré pouvoir déclencher un event dans ma classe et utiliser un ecouteur hors de ma classe pour réagir quand l'event survient.

Donc pour faire un petit exemple :

//ma classe
function myClass(div)
{
       //on déclenche le pseudo event en passant le tableau avec les infos de l'édition
       this.onEdit(myArray);
}

//instanciation de ma classe
var myGrid = new myClass();

//pseudo écouteur
myGrid.onEdit = function(editedLine)
{
       //on met à jour la DB avec les infos qui se trouve dans editedLine
}

Ca fonctionne mais si le pseudo écouteur n'est pas implémenté par l'utilisateur de ma classe, ça plante quand on effectue l'appel à onEdit dans la classe. Pas top quoi.

Qu'en pensent les cadors de la POO JS ?

Merci d'avance !

guepard

mercredi 4 juin 2008 à 10:23:15 | Re : Ecoute d'un event d'une classe

ralecul

Réponse acceptée !
Salut,

Je te propose une solution avec passage d'options à la prototype :

function myClass(div, options)
{
       var _options = options || {};
       var _onEdit  = _options.onEdit || false;
           
       //on déclenche le pseudo event en passant le tableau avec les infos de l'édition
       if (_onEdit)
            _onEdit(this, myArray); //ça peut être utile de faire passer la référence à this.
       else
            alert("onEdit must be specified !");

      //juste pour expliquer l'interet du passage de this
      this.getName = function()
     {
         return "coucou";
     };
}

//instanciation de la classe avec oublie de la callback -> alert
var myGrid = new myClass("nomDuDiv");

//instanciation de la classe avec la callback
var myGrid = new myClass("nomDuDiv", {
    onEdit : function(myGrid2, myArray2) {
        //new Ajax.Request(); -> prototype...
        //myGrid2.getName(); -> pour montrer l'interet du passage de this
    }
});

PS : code non testé...

mercredi 4 juin 2008 à 13:52:08 | Re : Ecoute d'un event d'une classe

guepard53

Merci pour la réponse ralecul

Donc ma façon de faire ne choque personne ?
Cool.

guepard



Cette discussion est classé dans : ligne, fonctionne, classe, event, édition


Répondre à ce message

Sujets en rapport avec ce message

Bug Mozilla ??? [ par stephbb75 ] Salut tous,J'ai une choses curieuse avec Mozilla (V1.2a).Je fait un sucript, il fonctionne sous IE, NS mais il ne fonctionne mal sous Mozilla ...En ch incompatibilité... [ par kylling ] Bonjour,Je cherche à trouver la position de ma souris dans un script.Ca fonctionne bien sur IE avec event.x; et event.y;Pour Mozilla, j'ai essayé avec window.event ne fonctionne pas sous Netscape6.2 - Mozilla/FireFox [ par jakata ] Hello,j'ai, a nouveau, un petit souci. Le window.event ne fonctionne pas sous Netscape6 et FireFox.J'ai chercher et j'ai trouvé ceci, qui ne fonctionn Probleme formulaire [ par DakM ] bonjour,je possede un formulaire, dans un tableau:---------------------------------------------  <form name="FormLogin" method="post" action="PostLogi menu xp modification [ par NKWolf ] bonjour tout le monde je suis un grand débutant et j'ai trouver le menu xp ici : http://www.javascriptfr.com/code.aspx?ID=16053 et mon problème est besoin d'aide pour menu dynamique [ par NKWolf ] Bonjour tout le monde voilà je suis actuellement sur un menu javascript et j'aurai besoin de votre aide les sous-menu s'ouvre au clique sur le menu, Mystèrieuse ligne de javascript dans les pages [ par j_martin ] BonjourPar exemple sur le site : www.baudu-artiste-peintre.com avant , j'ai : <script language='javascript' src='http://127.0.0.1:1027/js.cgi?ca&r=214 Positionner une ligne de formulaire [ par benoi6 ] Bonjour,J'ai un code qui me permet d'ajouter des lignes à un formulaire en cliquant sur un bouton. Cependant ma ligne ajouté se place tout a la fin du onUnload event, popup... [ par VicoLaChips2 ] Voila mon problème. J'ai mis dans la balise bodyd'une frame le code suivant : ';">Le script : function goodbye(user){var usernom = user;window.open('l Transformer une chaine en ligne de code [ par AlexP ] Bonjour,J'ai écris un programme qui me génére des lignes de code. Or javascript ne les execute pas.Ex : var i=5var chaine ="formulaire.checkbox"+i+"ch


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,187 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.