Javascript AngularJs中对象内的引用数据

Javascript AngularJs中对象内的引用数据,javascript,angularjs,firebase,angularfire,Javascript,Angularjs,Firebase,Angularfire,我试图引用使用Firebase从工厂返回的对象中的子数据,但我被难住了。我可以成功获取所需的用户对象($scope.user),但似乎无法引用其中的数据(例如$scope.user.name)-所有内容都返回未定义 app.factory('Data', ['$firebase', function(){ var ref = new Firebase('https://something.firebaseio.com/users'); return { refUs

我试图引用使用Firebase从工厂返回的对象中的子数据,但我被难住了。我可以成功获取所需的用户对象(
$scope.user
),但似乎无法引用其中的数据(例如
$scope.user.name
)-所有内容都返回未定义

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或simple javascript。

这是因为加油机仍在打电话,而且还没有完成。$scope.user的引用已存在,因为它已被创建。如果将console.log更改为console.log(JSON.stringify($scope.user));你会看到它实际上是空的。Chrome dev tools保留通话结束后填写的参考信息。

这是因为加油机仍在通话,但尚未完成通话。$scope.user的引用已存在,因为它已被创建。如果将console.log更改为console.log(JSON.stringify($scope.user));你会看到它实际上是空的。Chrome dev tools保留通话结束后填写的参考信息。

这是因为加油机仍在通话,但尚未完成通话。$scope.user的引用已存在,因为它已被创建。如果将console.log更改为console.log(JSON.stringify($scope.user));你会看到它实际上是空的。Chrome dev tools保留通话结束后填写的参考信息。

这是因为加油机仍在通话,但尚未完成通话。$scope.user的引用已存在,因为它已被创建。如果将console.log更改为console.log(JSON.stringify($scope.user));你会看到它实际上是空的。Chrome dev tools保留调用完成后填写的引用。

可能是您的user.name==未定义?
$asObject
返回一个承诺,该承诺在将来某个时候将包含用户的属性。我会写一个简短的答案(其中有很多类似问题的参考资料)。没关系,看起来马修·伯格刚刚击败了我。:-)谢谢你让我明白了这个问题!在这些问题上,你当然是一个很好的资源。不客气。我希望在我的链接和马修的答案之间,事情现在更清楚了。不幸的是,web的异步特性总是有点棘手。但幸运的是,使用Firebase,您可以获得实时数据更新,这非常棒。:-)顺便说一句:如果马修的回答也有帮助的话,别忘了接受。也许你的user.name==未定义?
$asObject
会返回一个承诺,将来某个时候会包含用户的属性。我会写一个简短的答案(其中有很多类似问题的参考资料)。没关系,看起来马修·伯格刚刚击败了我。:-)谢谢你让我明白了这个问题!在这些问题上,你当然是一个很好的资源。不客气。我希望在我的链接和马修的答案之间,事情现在更清楚了。不幸的是,web的异步特性总是有点棘手。但幸运的是,使用Firebase,您可以获得实时数据更新,这非常棒。:-)顺便说一句:如果马修的回答也有帮助的话,别忘了接受。也许你的user.name==未定义?
$asObject
会返回一个承诺,将来某个时候会包含用户的属性。我会写一个简短的答案(其中有很多类似问题的参考资料)。没关系,看起来马修·伯格刚刚击败了我。:-)谢谢你让我明白了这个问题!在这些问题上,你当然是一个很好的资源。不客气。我希望在我的链接和马修的答案之间,事情现在更清楚了。不幸的是,web的异步特性总是有点棘手。但幸运的是,使用Firebase,您可以获得实时数据更新,这非常棒。:-)顺便说一句:如果马修的回答也有帮助的话,别忘了接受。也许你的user.name==未定义?
$asObject
会返回一个承诺,将来某个时候会包含用户的属性。我会写一个简短的答案(其中有很多类似问题的参考资料)。没关系,看起来马修·伯格刚刚击败了我。:-)谢谢你让我明白了这个问题!在这些问题上,你当然是一个很好的资源。不客气。我希望在我的链接和马修的答案之间,事情现在更清楚了。不幸的是,web的异步特性总是有点棘手。但幸运的是,使用Firebase,您可以获得实时数据更新,这非常棒。:-)顺便说一句:如果马修的回答也有用的话,别忘了接受。