2016-03-25 52 views
0

我想在一个模块中创建一个函数,该模块可以与各种依赖一起工作,但在模板中调用,到目前为止,我只收到一个函数undefined错误。我哪里去错了,或者这是不可能的?RequireJS从模块中返回一个函数用于模板

helper.js模块

define(['aDependency'],function(){ 

    var sayHi = function(){ 
     console.log('Hi'); 
}; 
return{ 
    sayHi: sayHi 
} 

此模块是我在主文件需要

requirejs(['lib/helper']); 

而且我想使用的功能在我的模板;

<button data-remodal-action="confirm" onClick="sayHi()"/> 

但是我得到一个未定义的函数。

任何帮助非常感谢。

干杯

回答

1

好像你试图调用sayHi功能就像它在全球范围,但这不是因为requirejs模块有隔离范围

要使用它像这样 - <button data-remodal-action="confirm" onClick="sayHi()"/> 你应该这样做

requirejs(['lib/helper'], function(helper){ 
    window.sayHi = helper.sayHi; 
}); 

但它是一个反模式设置全局变量将从HTML被调用。我会建议你做这样的事情

HTML:

<button id="sayHiButton" data-remodal-action="confirm"></button> 

JS:

requirejs(['lib/helper'], function(helper){ 
    document.getElementById('sayHiButton').addEventListener('click', function(){ 
     helper.sayHi(); 
    }); 
}); 
0

你不能这样做,

<button data-remodal-action="confirm" onClick="sayHi()"/> 

指向一个全局函数。

您的sayHi()功能是您的helper模块返回的对象的一部分。这根本不是全球性的。如果您想将该功能添加为按钮上的单击事件,则必须在可见的位置执行该操作。

也就是说助手模块内部

define(['aDependency'],function(){ 

    var sayHi = function(){ 
     console.log('Hi'); 
    }; 
    $('button').click(sayHi); 
return{ 
    sayHi: sayHi 
} 

模块内使用的辅助模块:

requirejs(['lib/helper'], function (helper) { 
    $('button').click(helper.sayHi); 
}); 
相关问题