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!
Penso che tu intenda "implicito" invece di "esplicito" nella tua prima frase. – bennlich
In sincronizzazione esplicita. quindi non usiamo più .on() .set() .push()? – vzhen
Grazie @bennlich, corretto! @vzhen No, in sync esplicito usi solo 'add()', 'remove()' e 'update()'. – Anant