2016-07-05 5 views
1

これはおそらく、私はここで同様の質問を見つけることができなかったので、おそらくnoob質問です。私はバックエンドとしてfirebaseを備えたionic-angularjsアプリケーションを書いています。 I firebase snapshot.val()メソッドによって返されたデータのスナップショットをしましたし、これはデータが私のクロムコンソール(添付PIC)に表示する方法ですfirebaseから返されたオブジェクトのプロパティにアクセスすることができません

var tmp = {}; 
CurrUser.getEventdesc(eventid).then(function (result) { 
tmp = result; 
console.log(tmp.Description); 
}); 

CurrUserは工場で、getEventdescは、工場内の関数であります。 getEventdesc機能は以下のようになります。

getEventdesc: function(id) { 
var deferred = $q.defer(); 
ref.child('Events').orderByChild('Eventid').equalTo(id).on('value', function (snapshot) { 
event = snapshot.val(); 
console.log(event); 
deferred.resolve(event); 
}); 
return deferred.promise; 
} 

enter image description here

今、私は私のangularjsコントローラにtmp.Descriptionで「説明」プロパティにアクセスしようとしているが、私は「未定義」というエラーが表示されます。誰かが私にオブジェクトのプロパティへのアクセスを手伝ってもらえれば幸いです。御時間ありがとうございます。

アップデート2:

var tmp = {}; 
var newtemp = {}; 
CurrUser.getEventdesc(eventid).then(function (result) { 
tmp = result; 
for (var itemID in tmp) { 
newtmp = tmp[itemID]; 
}; 
console.log(newtmp.Description); 
}); 

よろしく、

+0

をあなたのコードを投稿してください。プロパティとエラーメッセージにアクセスします。 – marton

答えて

0

あなたは全体firebaseオブジェクトだけでなく、要求されたIDを再調整している、この試してみてください。

event = snapshot.val(); 
deferred.resolve(event[id]); 
+0

ありがとう@Martijn Welkerこれは私のコードが今見て、オブジェクトプロパティにアクセスできる方法です。これが正しいアプローチだと思いますか?再度、感謝します。 'var tmp = {}; var newtemp = {}; CurrUser.getEventdesc(イベントID).then(関数(結果){ TMP =結果、TMPにおける(VARアイテムID){ newtmp = TMP [アイテムID]を ; }; にconsole.log(newtmp.Description)。 }); ' – AjRev

+0

@AjRev私のコードを更新しました。それを見てください –

+0

ありがとう@Martijn。事実、オブジェクト全体が必要で、コントローラ内の他のプロパティを使用します。あなたのコメントに返信して投稿したコードを見直すことができれば幸いです。何らかの理由で、コードを正しくインデントできません。 forループでnewtmpという新しいオブジェクトを割り当て、newtmp.Descriptionでプロパティにアクセスしました。これが正しいアプローチであるかどうかはわかりません。再度、感謝します。 – AjRev

関連する問題