Лучший способ обработки Firebase в AngularJS, безусловно, должен быть внутри службы, поэтому он доступен для всех контроллеров в приложении.
Я просто не могу заставить его работать! ... Сначала я попытался использовать angularFire(new Firebase(url))
, надеясь, что смогу привязаться к области действия службы, но Angular жалуется, что не может $watch
этого.
Поэтому я попробовал angularFireCollection вместо этого:
app.factory('myService', function myService(angularFireCollection) {
var url = 'https://myfirebase.firebaseio.com';
return {
getAll: function(path) {
var ref = angularFireCollection(new Firebase(url + '/' + path));
console.log(ref);
return ref;
},
...
};
});
Однако angularFireCollection - это объект, содержащий множество методов и т. д., если я привязываю его к контроллеру $scope, я просто получаю мусор. Он также жалуется, что не может вызвать функции Firebase до того, как я попытаюсь их использовать (например, Error: Firebase.push failed: second argument must be a valid function.
)... у кого-нибудь есть идеи, где я ошибаюсь?
Посмотрите этот PLUNKER
angularFire(new Firebase(url), $scope, 'value');
. Это здорово, если я просто хочу использовать его в одном контроллере, но я хочу иметь возможность привязываться к пользовательской службе, чтобы я мог получать/редактировать/обновлять данные с любого контроллера, просто передавая службу. На сайте Firebase показано, как связать неявно и явно для текущей $scope. - person stukennedy   schedule 19.09.2013