begin process at 2010 02 09 15:49:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript Orienté objet (POO)

 > 

Classes

 > 

Ecoute d'un event d'une classe


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Ecoute d'un event d'une classe

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ée 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

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales