Ich schaute auf viele Beiträge rund um globale/lokale Variablen, aber ich denke, ich vermisse etwas. Das ist, was ich versuche zu erreichen:Einstellung Javascript Variable innerhalb für Schleife
var commandList = {
'command_a': function() {
socket.emit({action: 'a'});
},
'command_b': function() {
socket.emit({action: 'b'});
}
};
Statt der Definition meiner Liste der Befehle, würde Ich mag sie von einem Ajax-Aufruf dynamisch definieren. Dies ist mein bester Versuch:
function getCommands() {
$.ajax({
type:'get',
url: '/getCommands',
data: data,
success: function(data) {
JSONdata = $.parseJSON(data);
// [{"action": "b", "command": "command_b"},{"action": "a", "command": "command_a"}]
var commandList = [];
jQuery.each(JSONdata, function(i, val) {
command = val['command'];
action = val['action'];
service = {
[command]: function() {
socket.emit({action: [action]});
}
console.log(service[Object.keys(service)[0]]);
}
commandList.push(service);
});
}
});
}
Das Hauptproblem besteht darin, dass in meiner Schleife, meine action
Variable nicht durch a
oder b
in service
ersetzt bekommen, die ich nehme an, weil action
nur definiert wird, wenn die Funktion wird genannt. Die console.log
kehrt:
function() {
socket.emit({action: [action]});
}
Statt:
function() {
socket.emit({action: 'a'});
}
ich denke, u müssen hinzufügen "var" vor JSONdata = $ .parseJSON (Daten) – Fantasim
Wo ist 'channel' definiert? – guest271314
@ guest271314 Entschuldigung, es war ein Tippfehler, behoben. – Bnjii