Ich habe Probleme mit einem Objekt in einem verschachtelten Array von Firebase mit angularfire bekommen.Javascript Get-Objekt in verschachtelten Kind-Array
Die Struktur sieht wie folgt aus:
users {
<user1-key>{
events{
<event-key>{
title: "event 1",
tasks: {
<task-key>{
title: "task 1",
isChecked: false
},
<task-key>{
title: "task 2",
isChecked: false
}
}
}
}
},
<user 2-key>{
events{
<event-key>{
title: "event 1",
tasks: {
<task-key>{
title: "task 1",
isChecked: false
},
<task-key>{
title: "task 2",
isChecked: false
}
}
}
}
}
}
Ich habe einen Dienst, die Elemente aus Feuerbasis basierend auf den holt:
app.factory("Events", function ($firebaseObject, $firebaseArray, baseUrl) {
ref = new Firebase(baseUrl);
refAuth = ref.getAuth();
events = $firebaseArray(ref.child("users/" + refAuth.uid + "/events"));
return {
all: function() {
return events;
},
get: function (eventId) {
for (var i = 0; i < events.length; i++) {
if (events[i].$id === eventId) {
return events[i];
}
}
},
getTasks: function(eventId){
for (var i = 0; i < events.length; i++) {
if (events[i].$id === eventId) {
return events[i].tasks;
}
}
},
getInnerTask: function(eventId, taskId){
for (var i = 0; i < events.length; i++) {
if (events[i].$id === eventId) {
event = events[i];
for(var j = 0; j < event.tasks.length; j++){
if(event.tasks[j].$id === taskId){
return event.tasks[j];
}
}
}
}
}
};
});
jetzt in meinem Dienst Ich bin in der Lage Veranstaltungen sowie bekommen als ein einzelnes Ereignis. aber ich kann anscheinend keine einzige Aufgabe bekommen. Listen Sie nur die Aufgaben auf. In getInnerTask verwende ich geschachtelte for-Schleifen in der Hoffnung, dass ich die ID auf ähnliche Weise erhalten kann, um die Ereignis-IDs zu bekommen, aber es funktioniert nicht.
hier ist mein Controller für das Einzelereignis:
app.controller("EventsInnerCtrl", function ($scope, $firebaseArray,$firebaseObject, $stateParams, Events) {
$scope.event = Events.get($stateParams.eventId);
$scope.tasks = Events.getTasks($stateParams.eventId);
console.log($scope.tasks);
$scope.clickTask = function(){
$scope.task = Events.getInnerTask($stateParams.taskId);
console.log($scope.task); // this returns "Undefined"
}
});
Sein bemerkenswert, dass meine Ereignisse Ausgabe wie folgt aussieht:
und meine Aufgaben heraus gesetzt sieht anders aus (es fehlt die $ ID-Feld in der Ausgabe):
ich jede Variation versucht haben könnte ich mir vorstellen, aber immer noch nicht Glück – sirJuice