[英]javascript get object in nested child array
我正在努力使用angularfire從firebase獲取嵌套數組中的對象。
結構如下:
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
}
}
}
}
}
}
我有一項服務,可根據用戶從Firebase提取項目:
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];
}
}
}
}
}
};
});
現在,在我的服務中,我既可以獲取事件,也可以獲取單個事件。 但我似乎無法完成一項任務。 只列出任務。 在getInnerTask中,我使用嵌套的for循環,希望我可以以與獲取事件ID相似的方式獲取ID,但它不起作用。
這是單個事件的我的控制器:
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"
}
});
值得注意的是,我的事件輸出如下所示:
和我的任務看起來不同(在輸出中缺少$ id字段):
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];
}
}
}
}
}
我的猜測是event
不在當前范圍內,可能是您無法訪問它...將var
關鍵字與event
一起使用怎么樣
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.