0

my 的一部分main.js包含以下功能:

function isTrue(x){...}
function resizeEditors() {...}
function updateLayout() {...}
function prettify() {...}
function setTheme(theme) {...}
function themedLayout(isDark){...}
function enablePanel(panel) {...}
function disablePanel(panel) {...}
function enableDefaultPanels() {...}
function toggleFullscreen() {...}
function toggleEditorFullscreen(selected) {...}

有没有办法让这些函数对我main.js的文件的依赖项可用?

例如,在editors.js我正在使用该isTrue函数但 editors.js 模块当前无法找到isTrue,因为它在main.js文件中

editors.setShowPrintMargin( isTrue( settings.showPrintMargin ) );

编辑

项目的样子:

main.js

require(['jquery', 'appSession', 'editors'], function ($, appSession, editors) {
    function isTrue(x){...}
    function resizeEditors() {...}
    function updateLayout() {...}
    function prettify() {...}
    function setTheme(theme) {...}
    function themedLayout(isDark){...}
    function enablePanel(panel) {...}
    function disablePanel(panel) {...}
    function enableDefaultPanels() {...}
    function toggleFullscreen() {...}
    function toggleEditorFullscreen(selected) {...}
});

editors.js

define(['jquery', 'appSession'], function($, appSession){
    ...
    editors.setShowPrintMargin( isTrue( settings.showPrintMargin ) );
    ...
    return editors;
});
4

2 回答 2

2

是的,您可以退货。

define(function () {
    return {
        isTrue: function() {
            // Code
        },
        otherFunction: function() {
            // Code
        }
    }
});

然后用他们的屁股

require(["main"], function(main) {

    main.isTrue(false);

});

您可以在网站上了解有关定义模块的更多信息。

于 2013-03-21T13:01:15.287 回答
1

您可以创建一个包含共享/全局功能的模块,并使其成为需要它的模块的依赖项:

globals.js:

define([], function() {
    function isTrue(x){}
    // rest of functions...
    function toggleEditorFullscreen(selected) {}

    return { // return functions... };
});

然后使用它:

require(["globals", "editors"], function(globals, editors) {
    // ...
    editors.setShowPrintMargin(globals.isTrue(settings.showPrintMargin));
    // ...
});

或者如果你想在 editors 模块中使用它,你的 editors.js 看起来像:

define(["globals"], function(globals) {
    // ...
    setShowPrintMargin(globals.isTrue(settings.showPrintMargin));
    // ...
});

或者,如果您真的希望它们是全球性的,您应该能够:

window.isTrue = function(valueToCheck) {
    // implementation ...
};
于 2013-03-21T13:04:02.543 回答