如何正确地将参数传递给RequireJS回调函数

时间:2016-05-15 12:21:36

标签: javascript requirejs

如何使用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);
    });         
}

1 个答案:

答案 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变量。)