8

AngularJS で Firebase を処理する最善の方法は、確実にサービス内から行う必要があるため、アプリ全体のすべてのコントローラーで利用できます。

私はそれを機能させることができません!...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.)...誰かが私が間違っている場所について何か考えを持っていますか?

このプランカーを見る

4

2 に答える 2

12

一部の機能をサービスにカプセル化する場合は、返された参照をサービスの状態に保つことを検討してください。私はあなたのプランカーを拡張しました。ほとんどの場合、あなたがしようとしていたことを行うようです。

http://plnkr.co/edit/Uf2fB0

于 2013-09-19T15:02:33.150 に答える