2016-05-15 59 views
0

如何通过RequireJS将参数传递给静态函数? 下面我需要运行函数render并传递给这个函数两个参数“node”和“bus”。如何正确传递参数给RequireJS回调函数

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

请注意RequireJS回调称为异步。

您的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变量实际上存在于你的代码)

相关问题