In meiner Website verwende ich einen Kategorienbaum, der als JSON-Objekt in der Datei "categories.json" gespeichert ist. Sein Wert wird zusammen mit einigen Methoden für den Zugriff auf die Eigenschaft "tree" eines Objekts namens "category" gespeichert. Dies ist Teil des Codes:Variablen innerhalb des jQuery.getJSON-Callbacks behalten ihren Wert nicht bei
var category = {
tree: {},
// loads the tree into memory
loadTree: function() {
$.getJSON("categories.json", function(data) {
this.tree = data;
console.log("Tree loaded");
});
},
// Returns an array with the children of a node
getChildren: function(name) {
return this.tree[name].children;
}
...
}
Ich verstehe, dass da getJSON eine asynchrone Funktion ist, die Auswirkungen des Rückrufs, den ich als Argument übergeben werden nicht sofort stattfinden. Aber selbst nachdem die Nachricht "Tree loaded" angezeigt wurde, ist es immer leer, wenn ich auf das category.tree-Objekt zugreife (dh category.getChildren() aufruft und das Ergebnis drucke).
'Rückkehr this.tree [name] .children;' Notwendigkeit zu sein 'zurück category.tree [name] .children;' –
@AlivetoDie Sind Sie sicher? Da 'category' das Basisobjekt ist, würde ich 'return category.tree [name] .children' sagen. 'Baum' ist undefiniert. –
oh ja. Danke fürs Erzählen –