2011-03-21 2 views
0

Je suis en train de me tromper avec un modèle javascript qui va me permettre d'espace de noms mon code et de définir des raccourcis en interne hors de la portée globale pour réduire la quantité de frappe que je vais devoir faire . Des choses comme $ au lieu de jQuery ou $ messageType au lieu de messages.messageType.javascript design pattern ne retourne pas intellisense pour certains objets

Alors que le modèle semble fonctionner bien que j'ai perdu certaines fonctionnalités IntelliSense maintenant en studio visuel 2010.

par exemple Ma fonction de test ci-dessous va alerter "succès" mais mon intellisense n'énumère pas à travers les propriétés de l'objet $ messageType.

Puisque la productivité est la clé, c'est un gros problème pour moi.

Y at-il quelque chose que j'ai raté que les gourous javascript peuvent prendre?

Voici un jsfiddle à jouer avec.

; (function (window) { 

    // Define a local copy of myObject 
    var myObject = function() { 
     // The myObject object is actually just the init constructor 'enhanced' 
     return new myObject.fn.init(); 
    }, 

    // Shortcuts. 
    // A central reference to the root messages object 
    $messages = null, 

    // A central reference to the root messages.messageType object 
    $messageType = null; 

    myObject.fn = myObject.prototype = { 
     init: function() { 
      // Initialise the object shortcuts. 
      $messages = this.messages; 
      $messageType = this.messages.messageType; 
     } 
    }; 

    // Give the init function the myObject prototype for later instantiation 
    myObject.fn.init.prototype = myObject.fn; 

    myObject.fn.messages = { 
     /// <summary> 
     /// Provides means to provide feedback message to the client. 
     /// </summary> 
     messageType: { 
      information: "information", 
      error: "error", 
      success: "success" 
     } 
    }; 

    myObject.fn.tester = function() { 
     alert($messageType.success); 
    }; 

    // Expose myObject to the global object 
    window.myObject = window.$m = myObject(); 
} (window)); 

jQuery(document).ready(function() { 
    $m.tester(); 
}); 

Répondre

0

Doh .... J'ai oublié de retourner l'objet dans ma fonction init !!

myObject.fn = myObject.prototype = { 
    init: function() { 
     // Initialise the object shortcuts. 
     $messages = this.messages; 
     $messageType = this.messages.messageType; 
     // It took jslint ans a cup of coffee to figure this out :) 
     return this; 
    } 
};