2010-03-25 15 views
0

Comment puis-je appeler test() à l'intérieur de cette méthode? C'est possible?Comment puis-je appeler cette fonction à l'intérieur de ce javascript anonyme? (Exemple TinyMce)

(function() { 

    tinymce.create('tinymce.plugins.WrImagerPlugin', { 

     init : function(editor, url) { 

      editor.addCommand('mceWrImagerLink', function() { 
       //--> how can i refer to test() here? 
      }); 
     }, 
     test: function() {alert('test');} 
     } 
    }); 

    tinymce.PluginManager.add('wr_imager', tinymce.plugins.WrImagerPlugin); 
})(); 

Répondre

1

Vous pouvez également conserver une référence à this dans la méthode init qui sera disponible dans la fermeture addCommand:

(function() { 

tinymce.create('tinymce.plugins.WrImagerPlugin', { 

    init : function(editor, url) { 
     var me = this; 
     editor.addCommand('mceWrImagerLink', function() { 
      //--> how can i refer to test() here? 
      me.test(); 
     }); 
    }, 
    test: function() {alert('test');} 
    } 
}); 

tinymce.PluginManager.add('wr_imager', tinymce.plugins.WrImagerPlugin); 

})(); 
5

Vous pouvez faire test une fonction régulière et l'affecter à l'objet, comme ceci:

(function() { 
    function test() { alert('test'); } 

    tinymce.create('tinymce.plugins.WrImagerPlugin', { 
     init : function(editor, url) { 
      editor.addCommand('mceWrImagerLink', function() { 
       test(); 
      }); 
     }, 
     test: test 
    }); 

    tinymce.PluginManager.add('wr_imager', tinymce.plugins.WrImagerPlugin); 
})(); 

Alternativement, vous pouvez conserver une référence à l'objet:

(function() { 
    var wrImaergPlugin = {  
     init : function(editor, url) { 
      editor.addCommand('mceWrImagerLink', function() { 
       wrImagerPlugin.test(); 
      }); 
     }, 
     test: function() { alert('test'); } 
    } 

    tinymce.create('tinymce.plugins.WrImagerPlugin', wrImagerPlugin); 
    tinymce.PluginManager.add('wr_imager', tinymce.plugins.WrImagerPlugin); 
})(); 

Enfin, dans cette spéci fic cas, vous devriez être en mesure d'appeler simplement tinymce.plugins.WrImagerPlugin.test().

+0

+1 j'aime votre réponse, de très bonnes alternatives! La solution d'Alsciende est un peu plus proche de mes besoins, alors obtenez la note acceptée (pour moi) – apelliciari