如何访问require.js模块中的闭包函数?

时间:2017-02-15 12:15:33

标签: requirejs closures

我正在尝试使用 require.js 加载我的模块依赖项,到目前为止它正在运行,但我有一个疑问。我创建了一个小函数来测试模块并将其放在一个名为 panelTest.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中显示了此脚本标记,以加载 panelTest.js

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

我的问题是如何从模块外部调用测试函数,因为容器参数应该来自模块外部。

1 个答案:

答案 0 :(得分:0)

您必须通过RequireJS提供的相应渠道访问该模块。您可以在加载RequireJS的那个script标记之后执行此操作:

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

根据您展示的代码,您的panelTest模块似乎并不像#34;主模块那样真正有意义。所以我不会把它作为data-main

如果要从anther模块中使用它,请将模块放在自己的文件中并按如下方式定义:

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