我尝试使用Firebase在工厂返回的对象中引用子数据,但我很难过。我可以成功获取我想要的用户对象($scope.user
),但我似乎无法引用其中的数据(例如$scope.user.name
) - 一切都返回undefined。
app.factory('Data', ['$firebase', function(){
var ref = new Firebase('https://something.firebaseio.com/users');
return {
refUser: function(id){
return $firebase(ref.child(id)).$asObject();
}
}
}]);
app.controller('MainCtrl', ['Data', function(Data){
$scope.user = Data.refUser(123); // 123 = user ID
console.log($scope.user); // Returns user object successfully (containing 'name' key)
console.log($scope.user.name); // Return undefined
}]);
我错过了什么?我不太确定问题甚至在于我的理解:Angular,Firebase或简单的javascript。
答案 0 :(得分:3)
这是因为refUser仍在拨打电话,但还没有完成。 $ scope.user的引用存在,因为它已经创建。如果将console.log更改为console.log(JSON.stringify($ scope.user));你会发现它实际上是空的。 Chrome开发工具会保留调用完成后填写的引用。