2016-05-15 7 views
0

Wie korrekt übergeben Parameter statische Funktion mit RequireJS? Unten muss ich Funktion Render ausführen und an diese Funktion zwei Parameter "Knoten" und "Bus" übergeben.Wie Parameter korrekt an RequireJS Callback-Funktion übergeben

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); 
    });   
} 

Antwort

1

Beachten Sie, dass der RequireJS-Rückruf async aufgerufen wird.

Ihre node Variable ist auf den umgebenden (globalen) Kontext beschränkt und hat den letzten Wert, den sie während der Schleife erhalten hat. Wenn der Rückruf aufgerufen wird, hat Knoten den letzten Wert.

Sie müssen die Variable durch eine Verschlussfunktion binden:

function makeCallback(node, bus) { 
    return function(module) { 
     module.render(node, bus); 
    }; 
} 

Nun ist die äußere node Variable „dupliziert“ innerhalb makeCallback(), wird es auf seinem Wert bleiben.

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)); 
} 

(Anmerkung:. Ich nehme an, das fehlende bus Variable im Code tatsächlich vorhanden ist)

Verwandte Themen