2013-05-24 9 views
6

Jestem nowy w bazie Firebase. Chcę go zbudować za pomocą angularjs i znalazłem angularfire.Różnica między niejawną i jawną synchronizacją Firebase AngularFire

W dokumentach angularFire wymienionych Synchronizacja jawna i jawna. Próbowałem zrozumieć dokument w github, ale nadal nie rozumiem, jaka jest różnica i jak z nich korzystać. angularFire() i angularFireCollection()

również, jakie są argumenty na myśli angularFire() i angularFireCollection()?

podziękowania w adv

Odpowiedz

19

Korzystanie angularFire jeśli chcesz niejawny synchronizacji, czyli wszelkie zmiany wprowadzone do modelu błyskawicznie rozprzestrzeniać się do wszystkich pozostałych klientów (i odwrotnie).

Użyj angularFireCollection, jeśli chcesz mieć kontrolę nad tym, kiedy wszelkie lokalne zmiany danych muszą zostać wysłane na serwer. Wszelkie zdalne zmiany nadal automatycznie aktualizują lokalną kolekcję.

niejawny synchronizacji:

myapp.controller('MyCtrl', ['$scope', 'angularFire', 
    function MyCtrl($scope, angularFire) { 
    var promise = angularFire(url, $scope, 'items', []); 
    } 
]); 

Pierwszy argument jest lokalizacja Firebase w którym chcesz zapisać/odzyskać dane. Drugi argument to zasięg, trzeci argument to nazwa właściwości pod $ scope, którą chcesz powiązać z danymi zaraz po wypełnieniu obietnicy. Na przykład:

promise.then(function() { 
    // Data available in $scope.items 
}); 

Czwarty argument to typ danych, które chcesz w swoim obiekcie JS. Użyj [] dla tablic, {} dla obiektów, "" dla ciągów znaków, 1 dla liczb i true dla wartości logicznych. Pamiętaj, że jeśli w podanej lokalizacji Firebase nie ma żadnych danych, możesz użyć tego argumentu do ustawienia wartości domyślnej.

W niejawnej synchronizacji, jeśli chcesz wprowadzić jakiekolwiek zmiany, po prostu zmodyfikuj $scope.items, a zmiana zostanie automatycznie zsynchronizowana ze wszystkimi innymi klientami za pośrednictwem Firebase. Podobnie wszelkie zmiany dokonane zdalnie automatycznie zaktualizują się o $scope.items.

Explicit sync:

myapp.controller('MyCtrl', ['$scope', 'angularFireCollection', 
    function MyCtrl($scope, angularFireCollection) { 
    $scope.items = angularFireCollection(url); 
    } 
]); 

Ta metoda pobiera tylko jeden argument. Jeśli chcesz dodać lub usunąć elementy, użyj metod: , remove lub remove lub remove. Na przykład:

$scope.items.add({test: "object"}); 

Od angularFireCollection nie wymaga zakres, można również korzystać z tego, jeśli chcesz używać Firebase poza kontrolerem (np kątowych dyrektyw, modułów itp) Mam nadzieję, że to pomaga!

+0

Myślę, że masz na myśli "implicit" zamiast "explicit" w swoim pierwszym zdaniu. – bennlich

+0

W jawnej synchronizacji. więc nie używamy już metody .on() .set() .push()? – vzhen

+0

Dzięki @bennlich, naprawiony! @vzhen Nie, w jawnej synchronizacji używaj tylko 'add()', 'remove()' i 'update()'. – Anant

Powiązane problemy