2013-05-24 11 views
6

Sono nuovo di Firebase. Voglio costruirlo con angularjs e ho trovato il fuoco angolare.Differenza tra Firebase AngularFire sincronizzazione implicita ed esplicita

Nei documenti angularFire elencati Sincronizzazione implicita ed esplicita. Ho provato a capire il documento in github ma ancora non capisco qual è la differenza e come usarli. angularFire() e angularFireCollection()

anche, quali sono gli argomenti significa in angularFire() e angularFireCollection()?

Grazie in adv

risposta

19

Usa angularFire se si desidera la sincronizzazione implicita, vale a dire tutte le modifiche apportate al modello sarà immediatamente propagarsi a tutti gli altri clienti (e viceversa).

Utilizzare angularFireCollection se si desidera controllare quando devono essere inviate al server le modifiche ai dati locali. Eventuali modifiche remote aggiorneranno automaticamente la tua raccolta locale.

sincronizzazione implicito:

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

primo argomento è la posizione del Firebase in cui si desidera memorizzare/recuperare i dati. Il secondo argomento è l'ambito, il terzo argomento è il nome della proprietà sotto $ scope che si desidera che i dati vengano associati non appena la promessa è soddisfatta. Ad esempio:

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

Quarto argomento è il tipo di dati che si desidera nel proprio oggetto JS. Utilizzare [] per gli array, {} per gli oggetti, "" per gli archi, 1 per i numeri e true per booleano. Si noti che se non sono presenti dati nella posizione Firebase fornita, è possibile utilizzare questo argomento anche per impostare il valore predefinito.

In sincronizzazione implicita se si desidera apportare modifiche, è sufficiente modificare $scope.items e la modifica verrà automaticamente sincronizzata con tutti gli altri client tramite Firebase. Allo stesso modo, tutte le modifiche apportate in remoto aggiorneranno automaticamente $scope.items.

sincronizzazione esplicita:

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

Questo metodo richiede un solo argomento. Se si desidera aggiungere o rimuovere elementi, utilizzare i metodi add, remove o update. Per esempio:

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

Dal angularFireCollection non richiede un ambito, è anche possibile utilizzare questo se si desidera utilizzare Firebase al di fuori di un controller (come direttive angolari, moduli, ecc) Spero che questo aiuti!

+0

Penso che tu intenda "implicito" invece di "esplicito" nella tua prima frase. – bennlich

+0

In sincronizzazione esplicita. quindi non usiamo più .on() .set() .push()? – vzhen

+0

Grazie @bennlich, corretto! @vzhen No, in sync esplicito usi solo 'add()', 'remove()' e 'update()'. – Anant

Problemi correlati