2017-02-15 13 views
0

Я пытаюсь использовать require.js для загрузки зависимостей модулей и пока это работает, но у меня есть сомнения. Я создал небольшую функцию для тестирования модулей и поместил его в файле с именем panelTest.js:Как получить доступ к функции закрытия в модуле require.js?

define(['./panel/View', './panel/TitleView'], function(View, TitleView) { 

    return function test(container) { 

     // main view 
     var panel = new View(container, 'main'); 
     var panelTitle = new TitleView(panel.getContainer(), 'main-title'); 
     panelTitle.setTitle('Properties Panel'); 
     //panelTitle.addCss('pjs-panelTitle'); 
     panel.addView(panelTitle); 

     // sections 
     var top = new View(panel.getContainer(), 'top'); 
     panel.addView(top); 
     var middle = new View(panel.getContainer(), 'middle'); 
     panel.addView(middle); 
     var bottom = new View(panel.getContainer(), 'bottom'); 
     panel.addView(bottom); 

    }; 
}); 

В HTML, который использует модули ввод включен этот сценарий тег, как показан в require.js documentation для загрузки панельTest.js.

<script data-main="panelTest.js" 
    src="require.js"></script> 

Мой вопрос как я могу вызвать функцию тестирования снаружи модуля, так как контейнера параметра предполагается извне модуля.

ответ

0

Вы должны получить доступ к модулю через соответствующие каналы, предоставляемые RequireJS. Вы можете сделать это, как это в script тег, который появляется после того, как тот, который загружает RequireJS:

require(['panelTest'], function (panelTest) { 
    panelTest(/* some value */); 
}); 

Учитывая код, который вы показать, ваш panelTest модуль, кажется, не имеет смысла, как «главный модуль», так что я не ставил бы его как data-main.

Если вы хотите использовать его из пыльников модуля, поместите модуль в свой собственный файл и определить его так:

define(['panelTest'], function (panelTest) { 
    panelTest(/* some value */); 
});