Ich habe den Dienst unten erstellt.Wie kann das Ergebnis der asynchronen Funktion in Firebase in AngularFire zurückgegeben und gespeichert werden
app.factory('userProfileFactory', ['FBDB', 'searchParam', function(FBDB, searchParam) {
var personalKey;
return {
userProfile: function(searchEmail) {
var deferred = $q.defer();
var FBref = new Firebase(FBDB).child('items');
var promise = FBref.orderByChild('email')
.startAt(searchEmail)
.endAt(searchEmail)
.on('value', function(snapshot) {
var data = snapshot.val();
personalKey = Object.keys(data)[0];
deferred.resolve(personalKey);
});
return deferred.promise;
}
};
}]);
Mein Controller ist wie folgt. Das Problem ist, dass es einen Moment dauert, bis die Ergebnisse zurückgegeben werden. Wenn also die $ save-Funktion außerhalb der Factory-Funktion aufgerufen wird, meldet sie eine 'undefinierte Variable'. Wie kann ich es machen, wenn $ speichern draußen ist?
app.controller('profileCtrl', ['userProfileFactory', 'FBDB', '$firebaseArray', function(userProfileFactory, FBDB, $firebaseArray) {
var FBref = new Firebase(FBDB).child('items');
userProfileFactory.userProfile().then(function(res){
var personalKey = res;
item.personalKey = res;
//$firebaseArray(FBref)$save(item); It works here. But moved this from here...
})
$firebaseArray(FBref)$save(item); //...to here. It does not work.
}]);