Angularjs 如何运行Firebase和Angualrjs承诺,例如$loaded(),然后从依赖函数获取值
我正在构建firebase angular应用程序:Angularjs 如何运行Firebase和Angualrjs承诺,例如$loaded(),然后从依赖函数获取值,angularjs,firebase,javascript,Angularjs,Firebase,Javascript,我正在构建firebase angular应用程序: var myApp = angular.module('appStart',[]); myApp.controller('MyController', function($scope,$firebase,,MyFactory){ //this is returning undefined as this point //How can i pass angualrjs promises so that it returns values
var myApp = angular.module('appStart',[]);
myApp.controller('MyController', function($scope,$firebase,,MyFactory){
//this is returning undefined as this point
//How can i pass angualrjs promises so that it returns values once factory finish runnig all operations
var returnData = MyFactory.getUsersProfile(userId);
});
myApp.factory('MyFactory', ['$firebase', function($firebase){
var factory = {};
factory.getUsersProfile = function(userId){
var firebaseRef = new Firebase("https://xxx.firebaseio.com/userprofile").child(userId);
//retrive the data
firebaseRef.on('value', function (snapshot) {
console.log(snapshot.val());
var data = snapshot.val();
if (data){
//Here I want to call another function and get and return values once called function finish running
var data = factory.getUsersBetsEventsDetails(data);
return data;
}else{
console.log('return nothing');
}
}, function (errorObject) {
console.log('The read failed: ' + errorObject.code);
});
}
factory.getUsersBetsEventsDetails = function(usersProfileData){
var firebaseBetsRef = new Firebase("https://xxx.firebaseio.com/e");
var userE = [];
angular.forEach(usersProfileData, function(usersProfileData){
console.log('getUsersBets',usersProfileData);
var firebaseEData = firebaseBetsRef.child(usersProfileData.e_id);
//retrive the data
firebaseE.on('value', function (snapshot) {
console.log(snapshot.val());
userE.push(snapshot.val());
console.log('userE',userE);
}, function (errorObject) {
console.log('The read failed: ' + errorObject.code);
});
//this is the values controller should get
retuen userE;
});
}
return factory;
}]);
正如我在评论中所写,我希望在完成运行后运行依赖代码,但不确定如何实现这一点
这段代码中有什么不确定的地方吗?请问。谢谢我最后使用了回调:
而且您正试图反对Firebase的异步特性(以及现在所有其他基于IO的操作)。很简单:不能从异步调用返回值,因为在执行
return
语句时,服务器还没有返回值。相反,你必须通过回拨(请参阅)或回复承诺(请参阅)。谢谢你,弗兰克·范Puffelen@Frank引发另一个错误的Van Puffelen: