2016-07-05 7 views
1

Dies ist wahrscheinlich eine Frage von noob, da ich hier im Stackoverflow keine ähnlichen Fragen finden konnte. Ich schreibe eine ionic-angularjs-Anwendung mit Firebase als Backend. Ich habe ein Datum Schnappschuss von Feuerbasis snapshot.val() -Methode zurückgegeben und das ist, wie die Daten zeigen, in meiner Chromkonsole nach oben (eingebundene pic)Zugriff auf die von Firebase zurückgegebenen Objekteigenschaften nicht möglich

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

CurrUser ist eine Fabrik und getEventdesc ist eine Funktion in der Fabrik . Die getEventdesc Funktion sieht wie folgt:

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

Jetzt i Ich versuche, die 'Beschreibung' Eigentum von tmp.Description in meinem AngularJS Controller zugreifen, sondern eine 'undefiniert' Fehler. Ich wäre dankbar, wenn mir jemand helfen könnte, auf die Objekteigenschaften zuzugreifen. Vielen Dank für Ihre Zeit.

Update 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); 
}); 

Grüße,

+0

schreiben Sie den Code in dem Sie möchte auf die Eigenschaft und die Fehlermeldung zugreifen. – marton

Antwort

0

Sie das gesamte Objekt Feuerbasis Neuabstimmung, nicht nur die angeforderte ID, versuchen Sie dies:

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

Danke @Martijn Welker So sieht mein Code jetzt aus und kann auf die Objekteigenschaft zugreifen. Denkst du, das ist der richtige Ansatz? Danke noch einmal. 'var tmp = {}; var newtemp = {}; CurrUser.getEventdesc (eventid) .then (function (result) { tmp = result; für (var itemID in tmp) { newtmp = tmp [itemID]; }; console.log (newtmp.Description); }); ' – AjRev

+0

@AjRev Ich habe meinen Code aktualisiert, bitte werfen Sie einen Blick darauf –

+0

Danke @Martijn. Tatsächlich brauche ich das gesamte Objekt und verwende die anderen Eigenschaften im Controller. Wäre dankbar, wenn Sie den Code überprüfen könnten, den ich als Antwort auf Ihren Kommentar gepostet habe. Aus irgendeinem Grund kann ich den Code nicht korrekt einrücken. Ich habe ein neues Objekt 'newtmp' in der for-Schleife zugewiesen und dann Zugriff auf die Eigenschaft von newtmp.Description. Ich bin mir nicht sicher, ob dies der richtige Ansatz ist. Danke noch einmal. – AjRev

Verwandte Themen