如何使用RequireJS将参数传递给静态函数? 下面我需要运行函数render并传递给这个函数两个参数" node"和"公共汽车"。
var nodes = document.querySelectorAll('*[ondrawjs]');
var node;
for(var i = 0; node = nodes[i]; i++) {
var render_name = node.getAttribute('ondrawjs');
require(['agera/' + render_name], function(module) {
module.render(node, bus);
});
}
答案 0 :(得分:1)
请注意,RequireJS回调称为async。
您的node
变量的范围限定为周围(全局)上下文,并且具有循环期间所配置的最新值。调用回调时,节点具有最后一个值。
您需要通过闭包函数绑定变量:
function makeCallback(node, bus) {
return function(module) {
module.render(node, bus);
};
}
现在,外部node
变量是"重复的"在makeCallback()
内,它将保持其值。
var nodes = document.querySelectorAll('*[ondrawjs]');
var node;
for (var i = 0; node = nodes[i]; i++) {
var render_name = node.getAttribute('ondrawjs');
require(['agera/' + render_name], makeCallback(node, bus));
}
(注意:我假设您的代码中实际存在缺少的bus
变量。)