0
私は、firefbaseを使ってネストされた配列のオブジェクトをangelfireで取得することに苦労しています。javascriptは入れ子の子配列でオブジェクトを取得します
構造は次のようになります。
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];
}
}
}
}
}
};
});
は今、私のサービスに私がイベントを取得するだけでなく、することができています単一のイベント。私は単一の仕事を得ることができないようです。タスクを一覧表示するだけです。 in getInnerTaskイベント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フィールド):
と
var
キーワードを使用することについて、私はノーまだ私が思いつく限りのバリエーションを試みたが、しているか...、現在のスコープでevent
ではありません、あなたがそれにアクセスすることができませんかもしれ運 – sirJuice