2013-04-29 14 views
9

W przykładach angularFire pokazuje, jak uzyskać kolekcję obiektów z bazy Firebase.Pojedynczy obiekt AngularFire

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

Co z jednym obiektem?

Próbowałem coś takiego:

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

nie wydaje się działać. Konsola wyświetla poprawnie wartość obiektu, ale kontroler nie aktualizuje się.

+1

Co do tego, dlaczego twoja próba nie zadziałała: podczas modyfikowania $ scope poza funkcją kątową (jak w tym wywołaniu zwrotnym Firebase), musisz ręcznie uruchomić $ digest za pomocą $ scope. $ Apply(). Tutaj jest całkiem dobre wytłumaczenie: http://jimhoskins.com/2012/12/17/angularjs-and-apply.html – bennlich

Odpowiedz

9

Spróbuj użyć regularną usługę angularFire i określić rodzaj swojej pojedynczego obiektu:

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

Uwaga 4. argument (”" oznacza ciąg, można również użyć wartości logicznych, liczby obiektów i tablic).

+0

Otrzymuję komunikat "Błąd: typ niezgodności" – Harry

+0

Czy pojedynczy obiekt pod adresem URL jest ciągiem znaków? Musisz zmienić 4. argument na obiekt tego samego typu, co na stronie "https://ex.firebaseio.com/stuff" lub na to, co zamierzasz tam przechowywać. Upewnij się również, że używasz najnowszej wersji biblioteki: http://firebase.github.io/angularFire/angularFire.js – Anant

+0

To obiekt, który zadziałał po tym, jak zamieniłem cytaty na nawiasy. Ten interfejs API nie ma dla mnie żadnego sensu, początkowo próbowałem wstawić "obiekt" jako ostatni argument. Czy jest jakaś dokumentacja do tego? Co sądzisz o standaryzacji/dopuszczeniu tego samego interfejsu API dla pojedynczych obiektów i kolekcji, więc nie musimy ładować wielu dostawców (mam nadzieję, że używamy poprawnej terminologii)? – Harry

Powiązane problemy