IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Instancier un singleton


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Par défaut Instancier un singleton
    bonjour, j'ai construit le singleton suivant :
    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
    var Dashboard = (function(){
          var constructeur = function(){
                var canvas = document.getElementById('dashboard');
                var ctx = canvas.getContext('2d');
                // others attributs and methods
          }
     
          var instance = null; 
          return new function(){
               this.getInstance = function(){
                     if( instance == null){
                            instance = new constructeur();
                     }
                     return instance;
               }
         }
     
    })();
    lors que j'appelle le singleton comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $(document).ready(function(){
         var  dash = Dashboard.getIntance();
    });
    je récupère bien l'instance. Par contre si je l'appelle ensuite comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function Item(x, y, width, height) {
           this.dashboard = Dashboard.getIntance();
           // others attributs and methods
    }
    j'obtient l'erreur suivante :
    canvas is null
    var ctx = canvas.getContext('2d');
    quelqu'un a une idée sur ce problème?

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    soit tu ne nous montres pas tout le code ...
    soit il y un souci de parenthèse en trop
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var Dashboard = (function(){
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre éclairé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Par défaut
    dsl , un oublie de ma part sur le post , c'est corrigé ci dessus. manquait
    )();
    à la fin

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    ce qui est donc la cause du problème ...

    là, la fonction est exécutée
    et je suis prêt a parier que c'est directement au chargement de la page et pas dans le ready ...
    => ta page n'a pas fini de charger et ton canvas n'est pas instancié .
    var canvas = document.getElementById('dashboard'); => paf !!!! erreur
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre éclairé Avatar de scandinave
    Homme Profil pro
    Développeur Java, NodeJs/Angular
    Inscrit en
    Mai 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java, NodeJs/Angular

    Informations forums :
    Inscription : Mai 2009
    Messages : 277
    Par défaut
    donc tu me dis que le premier cas marche, parce que j'ai un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $(document).ready(function(){
     
    }
    pourtant l'item est bien instancié dans le document.ready également :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $(document).ready(function(){
         var  dash = Dashboard.getIntance();
         var text = new Text("mon message", 1, 50);
    });
    l'object Text hérite de Item. Donc je ne voit pas pouquoi le premier appel marche bien mais que le 2nd dans l'object Text ne marche pas.

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    je ne parle pas ce l'instanciation, je parle de la declaration ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var Dashboard = (function(){ ... })()
    ça tu l'a mis ou dans ton code ...

    si il n'est pas dans le ready, et qu'il est dans le head de ta page, c'est a dire dans le flux AVANT ta balise canvas ...
    vu que la focntion est exécutée avec les () finales, à ce moment là ton canvas n'existe pas encore ...


    A passage, ce n'est pas la cause de ton souci, mais tant qu'a prendre de bonnes habitudes de codage, il y a une nouvelle entrée dans les contributions qui peut t'intéresser : http://www.developpez.net/forums/d13...n/#post7107219
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Singleton / durée de vie d'une instanciation declasse
    Par 105rn2 dans le forum VB.NET
    Réponses: 9
    Dernier message: 25/02/2013, 22h21
  2. [Objective-C] Classe singleton et instanciation de NSString
    Par Moebius33 dans le forum Objective-C
    Réponses: 0
    Dernier message: 10/01/2011, 21h38
  3. Instancier une fenetre comme Singleton
    Par zarohn dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 23/10/2010, 15h07
  4. Instanciation d'un objet dans une classe singleton
    Par mulfycrowh dans le forum Débuter
    Réponses: 1
    Dernier message: 16/09/2009, 15h52
  5. Réponses: 4
    Dernier message: 24/09/2008, 15h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo