我如何称呼一个;“注入依赖性”;来自模板的JavaScript函数?

我如何称呼一个;“注入依赖性”;来自模板的JavaScript函数?,javascript,html,Javascript,Html,假设我使用的是模块模式,比如RequireJS,我将模块a发送到模块B 现在,在我的模块中,我想使用模板引擎生成HTML,但是为了解决这个问题,让我们假设我手动创建HTML字符串。在这个HTML字符串中,我想创建一个按钮来调用模块“a”提供的函数 但我显然不能这么做: define( [ "a.js" ], function( a ) { var html = "<button onclick='a.myfunction();'>Click me!</button&g

假设我使用的是模块模式,比如RequireJS,我将模块a发送到模块B

现在,在我的模块中,我想使用模板引擎生成HTML,但是为了解决这个问题,让我们假设我手动创建HTML字符串。在这个HTML字符串中,我想创建一个按钮来调用模块“a”提供的函数

但我显然不能这么做:

define( [ "a.js" ], function( a ) {

    var html = "<button onclick='a.myfunction();'>Click me!</button>";

} );
define([“a.js”],函数(a){
var html=“单击我!”;
} );
我该怎么做?当我不能调用全局函数时,从JavaScript转换成“HTML字符串”,因为它都是基于模块的

define( [ "a.js" ], function( a ) {

    var html = "<button onclick='*** HERE I WANT TO CALL A FUNCTION PROVIDED WITH A***'>Click me!</button>";

} );
define([“a.js”],函数(a){
var html=“单击我!”;
} );

您可以通过以下方式使用事件委派:

define([“a”],function(a){
var html=“单击我!”;
$(“#按钮容器”)。在(“单击”、“按钮”,a.myfunction)上;
});

其中buttonContainer是页面上已存在的模板的容器。

我知道我可以在之后通过JavaScript手动添加事件-但这并没有打破使用模板语言+引擎的整个想法?@corgrath此建议比内联事件处理程序好得多。@corgrath我在这里看不到任何问题。在任何情况下,您的模块都负责生成一个HTML,那么为什么不立即挂接事件处理程序呢?如果您仍然想使用按钮的
onclick
事件内联,我相信您可以在模板中执行类似操作:
单击我但我不会这么做-它既丑陋又低效。。。
define(["a"], function (a) {

    var html = "<button>Click me!</button>";

    $("#buttonContainer").on("click", "button", a.myfunction);

});