Используйте angularFire
, если вы хотите неявную синхронизацию, то есть любые изменения, сделанные в модель будет мгновенно распространяться на все другие клиент (и наоборот).
Используйте angularFireCollection
, если вы хотите контролировать, когда любые локальные изменения данных должны быть отправлены на сервер. Любые удаленные изменения будут по-прежнему автоматически обновлять вашу локальную коллекцию.
неявная синхронизация:
myapp.controller('MyCtrl', ['$scope', 'angularFire',
function MyCtrl($scope, angularFire) {
var promise = angularFire(url, $scope, 'items', []);
}
]);
Первый аргумент является расположением Firebase, в которой вы хотите сохранить/восстановить данные. Второй аргумент - это область действия, третий аргумент - это имя свойства под $ scope, которое вы хотите связать с данными, как только будет выполнено обещание. Например:
promise.then(function() {
// Data available in $scope.items
});
Четвертый аргумент - это тип данных, которые вы хотите в своем объекте JS. Используйте []
для массивов, {}
для объектов, ""
для строк, 1
для чисел и true
для булевых. Обратите внимание: если данные не указаны в предоставленном местоположении Firebase, вы также можете использовать этот аргумент для установки значения по умолчанию.
В неявной синхронизации, если вы хотите внести какие-либо изменения, просто измените $scope.items
, и изменение будет автоматически синхронизироваться со всеми другими клиентами через Firebase. Аналогично, любые изменения, сделанные удаленно, будут автоматически обновляться $scope.items
.
Явная синхронизация:
myapp.controller('MyCtrl', ['$scope', 'angularFireCollection',
function MyCtrl($scope, angularFireCollection) {
$scope.items = angularFireCollection(url);
}
]);
Этот метод принимает только один аргумент. Если вы хотите добавить или удалить предметы, используйте методы add
, remove
или update
. Например:
$scope.items.add({test: "object"});
Поскольку angularFireCollection
не требует рамки, вы также можете использовать это, если вы хотите использовать Firebase вне контроллера (например, угловых директив, модулей и т.д.) Надеюсь, что это помогает!
Я думаю, что вы подразумеваете «неявный» вместо «явного» в вашем первом предложении. – bennlich
В явной синхронизации. поэтому мы больше не используем .on() .set() .push()? – vzhen
Спасибо @bennlich, исправлено! @vzhen Нет, в явной синхронизации вы используете только 'add()', 'remove()' и 'update()'. – Anant