我有两个文件 - 主要和事件。我试图将一个函数从一个文件调用到另一个文件。
所以,这就是它的样子:
事件
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可以帮忙吗?
答案 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();