2011-02-22 2 views
0

Je ne suis pas sûr que ce soit possible ou peut-être un design plus imporant. Commentaires sur les deux apprécié.Conception de 'plugins' - Comment passer une méthode objet dans JSON?

Nous avons un frontal que nous ajoutons des éléments fonctionnels à travers «plugins». La conception de plug-in est un objet javascript avec des données et des méthodes comme ci-dessous:

function FeedbackPlugin(){ 
    return { 
    name: "Feedback", 
    help: "Provide feedback on any element of the site", 
    ...  
    showForm : function(_feedbackType) { 
     ... 
    }, 
    ... 
    messageCallbacks: [{callbackKey:"ProvideFeedback",callbackHandler:showForm}]  
    }; 
} 

Les charges cadres chaque plugin puis itère sur les messageCallbacks pour attacher des événements comètes aux méthodes de plug-in.

Malheureusement, le code ci-dessus ne fonctionne pas. La méthode showForm du plug-in n'est pas dans la portée lorsque le framework tente de l'enregistrer. Je pense que nous devrons peut-être passer un pointeur vers la ShowForm méthode d'une instance de plugin existant ...

  • Est-il possible en javascript pour faire en quelque sorte cette méthode statique?
  • La méthode devrait-elle simplement rester à l'extérieur le plugin à des fins de commodité?

Merci.

Répondre

0

Si chaque plug-in en cours de chargement est statique (ne contient pas de données variables), chargez-les en tant que scripts au lieu de JSON. S'il existe des données dynamiques, séparez les données dynamiques des fonctions statiques et n'envoyez que les données au format JSON.

Questions connexes