我有一堆js代码,我试图用模块模式包装:
(function(){
function closeClicked(closeButton)
{
//do some stuff
}
//some more js code
}());
html调用者的定义如下:
<button type="button" onclick="closeClicked(this)">
<span aria-hidden="true">×</span></button>
代码将一些html注入到页面上的元素中,而html中的按钮调用js函数。这可以按预期工作,但是当所有代码都包装为模块时,找不到该函数。当此代码作为模块包装时,是否需要以不同方式定义或调用函数?
答案 0 :(得分:0)
这是设计的。关闭时无法访问闭包中的变量。
在模块模式中,您将展示包含您的功能的模块。在这种情况下,它看起来像这样:
var myModule = (function(){
function closeClicked(closeButton)
{
//do some stuff
}
//some more js code
return {
closeClicked: closeClicked
}
}());
myModule
将是从外部函数返回的对象。然后你会引用myModule.closeClicked
。