2015-01-07 3 views
0

Firebase를 사용하여 공장에서 반환 된 객체 내에서 하위 데이터를 참조하려고하는데 그다음 어려움을 겪고 있습니다. 내가 성공적으로 ($scope.user) 원하는 사용자 개체를 얻을 수 있지만 그 안에있는 데이터를 참조 할 수 없습니다 (예 : $scope.user.name) - 모든 반환됩니다 정의되지 않았습니다.AngularJs에있는 객체 내의 참조 데이터

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.

+0

아마 user.name === undefined입니까? – alexpods

+2

'$ asObject'는 미래의 어떤 시점에서 사용자의 속성을 포함하는 약속을 반환합니다. 나는 짧은 답을 쓸 것이다. (비슷한 질문에 대한 많은 참고 자료). Mathew Berg가 저를 때리는 것처럼 보입니다. :-) –

+0

http://stackoverflow.com/questions/27049342/asynchronous-access-to-an-array-in-firebase/27050749#27050749 및 http://stackoverflow.com/questions/26604472/firebase-angularfire -child-asobject-give-properties-undefined/26673597 # 26673597 –

답변

3

refUser가 여전히 전화를 걸고 아직 수신을 완료하지 않았기 때문입니다. $ scope.user에 대한 참조는 이미 작성 되었기 때문에 존재합니다. console.log를 console.log로 변경하면 (JSON.stringify ($ scope.user)); 실제로 비어있는 것을 볼 수 있습니다. Chrome 개발자 도구는 통화가 완료된 후에 채워지는 참조를 유지합니다.