Firebases AngularFire in einem AngularJS-Dienst

8

Der beste Weg, Firebase in AngularJS zu handhaben, muss sicherlich innerhalb eines Dienstes liegen, also ist es für alle Controller in der gesamten App verfügbar.

Ich kann es einfach nicht zur Arbeit bringen! ... Ich habe zuerst probiert, angularFire(new Firebase(url)) zu benutzen, in der Hoffnung, dass ich mich an den Umfang des Dienstes binden könnte, aber Angular beschwert sich, dass es nicht $watch it.

kann

Also habe ich angleFireCollection stattdessen wie folgt versucht:

%Vor%

Allerdings ist die angularFireCollection ein Objekt, das eine Ladung von Methoden etc. enthält. Wenn ich es an einen Controller $ scope anhefte, bekomme ich nur Müll. Es beschwert sich auch, dass es die Firebase-Funktionen nicht aufrufen kann, bevor ich versuche, sie zu verwenden (z. B. Error: Firebase.push failed: second argument must be a valid function. ) ... hat jemand irgendwelche Ideen, wo ich falsch liege?

Siehe PLUNKER

    
stukennedy 19.09.2013, 12:13
quelle

2 Antworten

12

Wenn Sie einen Teil der Funktionalität in einen Service kapseln möchten, sollten Sie den zurückgegebenen Ref-Status des Dienstes beibehalten. Ich habe deinen Plünderer erweitert. Es scheint hauptsächlich zu tun, was Sie versuchten.

Zypern

    
Jeff Ilse 19.09.2013, 15:02
quelle
6

Jeff hat die Frage richtig beantwortet ... Ich schreibe gerade eine Weiterentwicklung zu Jeffs Beispiel für Interessierte.

Ich habe die Erstellung des Firebase-Dienstes abstrahiert, sodass Sie dynamisch eine Instanz des von Ihnen gewünschten Firebase-Dienstes erstellen können: -

%Vor%

Sie erstellen zuerst eine Instanz des Service wie folgt

%Vor%

Dann können Sie den Service itemsService in Ihre Controller injizieren. Die Instanz wird mithilfe Ihrer Firebase-URL, z. B.

, initialisiert %Vor%

Die Firebase kann nun an Ihren Controller gebunden werden, z. B.

%Vor%

angepasst PLUNKER

    
stukennedy 19.09.2013 23:01
quelle