2009-12-23 4 views
1

Je suis en train de faire un plugin et je suis en cours d'exécution dans certains problèmes:question de la portée du plugin Jquery (fermeture)

(function($){ 
    var users = {}; 

    $.fn.plugin = function(){ 
     //blah, but alters users 
    } 
    $.fn.utility_function = function(){ 
     // uses users 
    } 
}); 

Qu'est-ce qui se passe est que lorsque je lance deux instances de ce plug-in, « utilisateurs » finit ayant la même valeur pour chaque instance du plugin. Comment puis-je les rendre uniques?

Répondre

2

C'est tout à fait normal, parce que vos utilisateurs objectent des vies en dehors de la portée de vos plugins.

Je vous suggère de stocker la valeur dans le cadre des données() méthode jquery attaché à votre élément dom affecté par le plug-in

voir this article.

0

Si vous souhaitez des objets uniques, vous pouvez effectuer une copie en profondeur d'un objet à l'aide de la méthode extend de jquery.

Dans votre cas, vous feriez:

(function($){ 
    var users = {}; 

    $.fn.plugin = function(){ 
     var myUsers = $.extend({}, users); 
     //blah, but alters users 
     // BUT should now use myUsers instead 
    } 
    $.fn.utility_function = function(){ 
     // uses users 
    } 
}); 

Mais je ne suis pas sûr que vous voulez des copies uniques des utilisateurs objet, car ils sont probablement un seul jeu qui change probablement au niveau mondial.