Ich habe ein JSON-Array von Category-Objekten aus meiner Datenbank. (Ich speichere es in vm.data in meinem Controller, der an einen Winkel Repeater gebunden ist.)angular grep oder filter, um ein Objekt mit einer ID zu erhalten
Jetzt muss ich zurück gehen und die SubCats in jeder Kategorie mit dem 'Category' Feld in jedem SubCat.
Hier ist mein generischen Daten Getter:
function getData(params, callback) {
$http({
method: 'GET',
url: 'database.php',
params: params
}).then(function successCallback(response) {
callback(response.data);
});
}
Also, meine Kategorien zu bekommen, ich mache:
function getCats() {
var params = {};
params.table = "Categories";
getData(params,buildCats);
};
, die
function buildCats(data) {
vm.data = data;
$.each(vm.data,function(index,value){
getSubCat(value.uID);
});
};
ruft zurück, dann eines nach dem man bekommt die SubCats:
function getSubCat(categoryId) {
var params = {};
params.table = "SubCats";
params.where_field = "Category";
params.where_value = categoryId;
getData(params, buildSubCat);
};
, die wieder dazu aufruft: (Ich habe nicht mehr die Kategorie-ID, also muss ich gehen für sie in meiner SubCat Daten suchen)
function buildSubCat(data) {
var categoryId = data[0].Category;
$filter('filter')(vm.data, function(el){
el.uID==categoryId;
}, true).SubCats = data;
}
und es ist hier, ich in Schwierigkeiten bin läuft.
Ich brauche halten die einzigartige Kategorie-Objekt erhalten in vm.data - das eigentliche Objekt, nicht eine Kopie davon - deren uID die ID der Subkategorien gleich ich zur Zeit der Verarbeitung, fügen Sie dann die aktuelle SubCat Objekt zu ihm. Das obige funktioniert nicht. Zumindest sehe ich nie die SubCats innerhalb der Kategorien in vm.data.
Ich versuchte, es auseinander zu ziehen, wie folgt aus:
var foo = $filter('filter')(vm.data, function(el){
el.uID==categoryId;
}, true);
foo.SubCats = data;
aber foo ist neue Instanz der Kategorie Objekt, kein Verweis auf die in vm.data, so meine nicht die Zugabe zu beeinflussen vm.data. Ich könnte versuchen, vm.data [n] durch foo zu ersetzen, aber das scheint eine schlechte Übung zu sein.
Wie kann ich die Kategorien und Unterkategorien asynchron abrufen und kombinieren?
Etwas kitzeln die Rückseite meines Gehirns sagt mir, ich sollte das tatsächliche Category-Objekt in die GetData übergeben, so dass es direkt im Rückruf verfügbar ist, aber ich bin mir nicht sicher, ob das Sinn macht.