2013-09-02 3 views
0

У меня есть этот модуль:доступа частные функции модуля RequireJS

define(function() { 
    clickHandlerA = function() { ... } 
    clickHandlerB = function() { ... } 

    return { 
    handle : function(param) { 
     doSomething(param); 
     var handler = 'clickHandler' + param; 
    } 
    } 
} 

Теперь мне нужно каким-то образом вызвать соответствующий обработчик щелчка. Я попытался

if (typeof handler == 'function') { 
    handler.call(); 
} 

Я также попытался

if (handler in this) { 
    handler(); 
} 

но ни одна работа. Какие-либо предложения?

+0

Вы не можете получить доступ к обработчик снаружи, вы должны экспортировать его. –

+0

@dystroy И если я должен был передать clickHandlerA и B, чтобы вернуть оператор моего модуля, как бы я их назвал и проверить, существуют ли они? – Banana

ответ

1

Я понимаю, что вам нужно это:

define(function() { 
    var handlers = { 
     A: function() { ... }, 
     B: function() { ... } 
    }; 

    return { 
    handle : function(param) { 
     doSomething(param); 
     return handlers[param]; 
    } 
    } 
} 

Таким образом, вы можете сделать это из-за пределов

yourModule.handle('A')(); 
+0

Это решение, которое я искал. – Banana

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