2013-04-29 3 views
9

angularFire 예제에서는 firebase에서 객체 컬렉션을 얻는 방법을 보여줍니다.AngularFire 단일 객체

app.controller('ctrl', ['$scope', '$timeout', 'angularFireCollection', 
    function($scope, $timeout, angularFireCollection) {  
    var url = 'https://ex.firebaseio.com/stuff'; 
    $scope.col = angularFireCollection(url); 
    } 
]); 

단일 개체는 어떻습니까?

fb.child('stuff/'+id).on('value', function(snapshot) { 
    $scope.obj = snapshot.val(); 
    console.log('hey got the value') 
    console.log(snapshot.val()) 
    }); 

가 작동하지 않습니다

나는 이런 식으로 뭔가를 시도했다. 콘솔에서 개체 값을 올바르게 출력하지만 컨트롤러가 업데이트되지 않습니다.

+1

시도가 실패한 이유는 : (Firebase 콜백과 같이) 각도 함수 밖에서 $ scope를 수정할 때 $ scope. $ apply()로 수동으로 $ digest를 트리거해야합니다. 여기에 꽤 좋은 설명이 있습니다 : http://jimhoskins.com/2012/12/17/angularjs-and-apply.html – bennlich

답변

9

시도 정규 angularFire 서비스를 사용하고 단일 개체의 유형을 지정 : 4 인수가

app.controller('ctrl', ['$scope', '$timeout', 'angularFire', 
    function($scope, $timeout, angularFire) {  
    var url = 'https://ex.firebaseio.com/stuff'; 
    angularFire(url, $scope, "obj", ""); 
    } 
]); 

주 (""문자열을 의미합니다, 당신은 또한 부울, 숫자, 객체, 배열을 사용할 수 있습니다).

+0

'Error : type mismatch '가 나타납니다. – Harry

+0

URL의 단일 객체가 문자열입니까? "https://ex.firebaseio.com/stuff"에있는 것과 같은 유형의 객체 또는 거기에 저장할 계획으로 4 번째 인수를 변경해야합니다. 또한 최신 버전의 라이브러리를 사용하십시오 : http://firebase.github.io/angularFire/angularFire.js – Anant

+0

따옴표를 대괄호로 대체 한 후 작동하는 객체입니다. 이 API는 나에게 의미가 없지만 처음에는 "object"를 마지막 인자로 넣으려고 시도했습니다. 이것에 대한 문서가 있습니까? 단일 객체 및 컬렉션에 동일한 API를 표준화하거나 허용하는 것에 대해 어떻게 생각합니까? 여러 공급자를로드 할 필요가 없으므로 (올바른 용어를 사용하기를 바랍니다)? – Harry