如何使用requireJS从另一个文件调用函数

时间:2014-01-24 15:53:26

标签: javascript jquery function events requirejs

我有两个文件 - 主要和事件。我试图将一个函数从一个文件调用到另一个文件。

所以,这就是它的样子:

事件

require(['app/main'], function(call) {
    // click event respond test
    document.body.addEventListener("click", function(e) {
        var target = e.target;
        if (target.hasClass === "call"){
            functionCall()();
        }
    });
});

主要

define(["jquery"], function() {

    // Call
    var box = $('.box');
    return function functionCall(){
        box.addClass('visible');
    }
});

有什么问题,anyboyd可以帮忙吗?

4 个答案:

答案 0 :(得分:3)

主:

define(["jquery"], function($) {

    var main =  {
        functionCall: function(){
            $('.box').addClass('visible');
        }
    }

    return main;
});

事件:

require(['jquery','app/main'], function($, main) {

    $('body').on('click', function () {
        if($(this).hasClass('call')){
            main.functionCall();
        }
    });

});

答案 1 :(得分:0)

一种方法是在需要调用函数的地方添加此代码: require('pathToModuleOrModuleName').functionYouWantToCall()

但是如果您在开始时定义或需要模块(在事件中为'main'),那么只需添加函数调用就可以了:

call.functionName();

答案 2 :(得分:0)

除非我的眼睛欺骗我,否则对代码做出的最简单的改变就是替换它:

functionCall()();

用这个:

call();

因为main模块返回的函数在call模块中导入为events,因为这是您在传递给define的回调中的名称。< / p>

答案 3 :(得分:0)

首先,您的代码存在一些基本问题

在以下代码中

define(["jquery"], function() {

您在函数定义中引用查询的位置。 我认为您应该首先将定义的jquery映射到函数声明中,如下所示

  define(["jquery"], function($) {

其次,调用函数之后做的是什么?

if (target.hasClass === "call"){
   functionCall()();
}

从该调用中删除trailing()。它应该是functionCall();