2013-05-24 4 views
6

Я новичок в firebase. Я хочу построить его с помощью angularjs, и я нашел угловой огонь.Разница между Firebase AngularFire неявная и явная синхронизация

В документах с угловыми планами Неявная и явная синхронизация. Я попытался понять документ в github, но я до сих пор не понимаю, в чем разница и как их использовать. angularFire() и angularFireCollection()

также, какие аргументы означают в angularFire() и angularFireCollection()?

благодарственный в айу

ответ

19

Используйте 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 вне контроллера (например, угловых директив, модулей и т.д.) Надеюсь, что это помогает!

+0

Я думаю, что вы подразумеваете «неявный» вместо «явного» в вашем первом предложении. – bennlich

+0

В явной синхронизации. поэтому мы больше не используем .on() .set() .push()? – vzhen

+0

Спасибо @bennlich, исправлено! @vzhen Нет, в явной синхронизации вы используете только 'add()', 'remove()' и 'update()'. – Anant

Смежные вопросы