AngularJs中对象内的引用数据

时间:2015-01-07 17:19:18

标签: javascript angularjs firebase angularfire

我尝试使用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。

1 个答案:

答案 0 :(得分:3)

这是因为refUser仍在拨打电话,但还没有完成。 $ scope.user的引用存在,因为它已经创建。如果将console.log更改为console.log(JSON.stringify($ scope.user));你会发现它实际上是空的。 Chrome开发工具会保留调用完成后填写的引用。