2010-03-25 71 views
0

如何在該方法內調用test()?這是可能的?如何在匿名javascript內調用該函數? (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); 
})(); 

回答

1

您還可以保持一個參考thisinit方法將在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

您可以test常規功能,並將其分配給對象,就像這樣:

(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); 
})(); 

或者,你可以保持一個參考對象:

(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); 
})(); 

最後,在這個speci fic的情況下,你應該可以簡單地致電tinymce.plugins.WrImagerPlugin.test()

+0

+1我喜歡你的答案,很不錯的選擇! Alsciende的解決方案有點接近我的需求,所以獲得公認的標誌(對我來說) – apelliciari 2010-03-25 16:41:28