首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RequireJS从模板中使用的模块返回函数

RequireJS从模板中使用的模块返回函数
EN

Stack Overflow用户
提问于 2016-03-25 09:14:44
回答 2查看 377关注 0票数 0

我希望在一个模块中创建一个函数,该函数可以处理各种依赖项,但在模板中调用,到目前为止,我只收到一个未定义的函数错误。我哪里错了,还是根本不可能?

helper.js模块

代码语言:javascript
运行
复制
define(['aDependency'],function(){

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

这个模块在我的主文件中是必需的

代码语言:javascript
运行
复制
requirejs(['lib/helper']);

我想在我的模板中使用这个函数;

代码语言:javascript
运行
复制
<button data-remodal-action="confirm" onClick="sayHi()"/>

然而,我得到了一个不确定的函数。

任何帮助都非常感谢。

干杯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-25 09:30:34

似乎您试图调用sayHi函数,就像它在全局范围中一样,但这并不是因为需求模块有独立的作用域

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

代码语言:javascript
运行
复制
requirejs(['lib/helper'], function(helper){
    window.sayHi = helper.sayHi;
});

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

HTML:

代码语言:javascript
运行
复制
<button id="sayHiButton" data-remodal-action="confirm"></button>

联署材料:

代码语言:javascript
运行
复制
requirejs(['lib/helper'], function(helper){
    document.getElementById('sayHiButton').addEventListener('click', function(){
         helper.sayHi();
    });
});
票数 1
EN

Stack Overflow用户

发布于 2016-03-25 09:24:04

你不能那样做

代码语言:javascript
运行
复制
<button data-remodal-action="confirm" onClick="sayHi()"/>

指向全局函数。

sayHi()函数是helper模块返回的对象的一部分。这根本不是全球性的。如果要将该函数添加为按钮上的单击事件,则必须将其添加到可见的位置。

在帮助器模块中。

代码语言:javascript
运行
复制
define(['aDependency'],function(){

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

使用助手模块的内部模块:

代码语言:javascript
运行
复制
requirejs(['lib/helper'], function (helper) {
  $('button').click(helper.sayHi);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36217131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档