2010-03-25 1 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

Вы также можете сохранить ссылку на this в init метод, который будет доступен в 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); 
})(); 

Наконец, в этой спецификации fic case, вы должны просто позвонить tinymce.plugins.WrImagerPlugin.test().

+0

+1 мне нравится ваш ответ, очень хорошие альтернативы! Решение Alsciende немного ближе к моим потребностям, поэтому получите признанный знак (для меня) – apelliciari

Смежные вопросы