2015-01-26 4 views
1

현재 AngularFire를 사용하고 있으며 데이터베이스에있는 오브젝트의 길이를 가져 오려고합니다. 내 중포 기지에서Firebase 오브젝트 길이를 얻을 수 없습니다.

는, 구조는, 내 컨트롤러에서

popping-fire-5575 
    celio 
    -JgaQt-tNq-gRVIVZdCD 
    artist: 
    track: 
    -JgaQuBoYk9VX3pWylx3 
    artist: 
    track: 
    -JgaQuf_pyBFJ7EA1Fo_ 
    artist: 
    track: 

과 같은
var profileObject = FirebaseDemo.getBroadcast($routeParams.param); 
var twotwo = profileObject.$asObject(); 
twotwo.$bindTo($scope, 'data'); 

내가 대가로 얻는 변수 'twotwo', 로그 콘솔

Object 
$$conf: Object 
$id: "celio" 
$priority: null 
-JgaQt-tNq-gRVIVZdCD: Object 
-JgaQuBoYk9VX3pWylx3: Object 
-JgaQuf_pyBFJ7EA1Fo_: Object 
__proto__: Object 

그러나 길이를 얻으려면 여러 가지 방법을 시도해 봤지만 할 수는 없습니다. 성공하기. 누군가 나에게 몇 가지 지시 사항이나 조언을 줄 수 있습니까?

+0

내 대답과 관련이 없음 : 질문이 자습서 나 수업을 기반으로한다는 인상을받습니다. 그렇다면 튜토리얼/수업을 가르쳐 주시겠습니까? 저는 당신이 과제에 갇혀있는 첫 번째 사람이 아니기 때문에 좀 더 자세히 읽고 싶습니다. 그리고 아마도 과제를 가진 사람들을 구조적으로 돕기 위해 뭔가를 할 수 있습니다. –

+0

개체의 길이가 없습니다. 배열 않습니다. 또한 [이 가이드] (https://www.firebase.com/docs/web/libraries/angular/guide.html)는 오브젝트 및 배열과 같은 AngularFire의 기본 원리를 설명하기 때문에 시작하기 가장 좋은 도구 일 것입니다. . 나는 또한이 튜토리얼을 누가 내놓고 있는지 알고 싶다. 그것은 공식 문서가 왜 그렇게 최후의 수단인지, 왜 .length 속성을 갖지 않는 자바 스크립트 객체 같은 근본적인 것들로 고심하는 많은 사람들이 앵귤러와 파이어베이스를 모두 처음으로 정복하려고하는지에 대해 나를 당황하게합니다. – Kato

답변

1

Firebase는 데이터를 비동기 적으로로드 (동기화)하므로, console.log 문이 실행될 때까지 데이터를로드하는 중일 수 있습니다.

  1. 사용 $asArray() 대신 $asObject() : 코드에서

    var twotwo = profileObject.$asArray(); 
    twotwo.$loaded().then(function(data) { 
        console.log('Initial data loaded', data.length); 
    }); 
    

    두 가지 주요 변경 : 초기 데이터 로딩이 완료되면

    다행히 AngularFire는 통지하고 코드를 실행하는 방법이 , 귀하의 데이터 구조가 배열이기 때문에

  2. "이벤트"를 $loaded 듣고 그에 응답하십시오

AngularFire는 이미 AngularJS에 데이터의 변경 사항을 알리므로 $scope에 데이터를 바인딩하고보기에 표시하면 $loaded에 응답 할 필요가 없습니다.

관련 문제