Was ich hier erreichen möchte, ist ein strukturierter Datensatz zum Rendern einer Zeitleiste aus dem Array "timeTree"
.Zugriff auf den Kontext des neu gestoßenen Objekts im Array
Zuerst übertrage ich Ziele, die Enddatum haben. Basierend auf diesem Datum möchte ich kategorisieren sie in die richtige Jahr und Monat.
Angular für die Darstellung verwendet wird, und ich hatte keine Probleme mit dieser Struktur zu machen, kann man das nicht über das Erstellen gesagt werden ...
Meine Frage ist, wie ein Tor in das Jahr hinzuzufügen, das ist noch nicht im Array?
scope.timeTree = [];
_.each(goals, function(goal) {
if (goal.stateId != "FINISHED") {
var goalYear = new Date(goal.plannedEnd).getFullYear();
var goalMonth = new Date(goal.plannedEnd).getMonth();
if (scope.timeTree.length > 0) {
_.each(scope.timeTree, function(year) {
if (year.year === goalYear) {
_.each(year.months, function(month) {
if (month.month === goalMonth) {
month.goals.push(goal);
} else {
year.months.push({
month: goalMonth,
goals: []
});
_.each(month.goals, function(goal) {
})
}
})
} else {
scope.timeTree.push({
year: goalYear,
months: []
});
_.each(year.months, function(month) {
if (month.month === goalMonth) {
month.goals.push(goal);
} else {
}
});
}
})
} else {
// init structure
scope.timeTree.push({
year: goalYear,
months: []
});
_.each(scope.timeTree, function(year) {
year.months.push({
month: goalMonth,
goals: []
});
_.each(year.months, function(month) {
month.goals.push(goal);
});
});
}
}
}
}
In dem obigen Code, speziell, wenn year.year zu goalYear nicht gleich ist, ich einfach nicht wissen, was zu tun ist ... ich im Rahmen des Jahres bin (Objekt mit Informationen über das Jahr , und Monate in diesem Jahr, die Ziele haben) Aber ich möchte nicht über Monate im Kontext des Jahres iterieren, was nicht gleich dem Jahr des Ziels ist. Ich möchte das Tor in das Feld der Monate schieben, in dem ich gerade gestoßen bin. Grundsätzlich ist das Hauptproblem mit negativen Zweigen von if-Anweisungen, wenn ich neue Objekte in das Array schieben muss und gleichzeitig das Ziel in die Arrays schiebe, die gerade erstellt (pushed) wurden. Vielleicht ist das nicht einmal ein guter Ansatz, also bin ich offen für bessere Lösungen. Auf der anderen Seite wäre es schön, wenn Sie wüssten, wie dieser genaue Ansatz funktioniert.