2016-04-13 11 views
0

Ich habe einige Daten in meinem Firebase-Server, die Einstellungen für Client-Apps bereitstellen. Ich habe eine Fabrik implementiert, die diese Daten vom Server erhält.

Meine Frage ist in Bezug auf Design - sollte ich diese Daten einmal und Anwendung starten und an rootscope anschließen und diese an alle Controller, die es benötigen, oder injizieren meine Fabrik in jeden Controller, der die Konfigurationsdaten und intern im Factory Store verwendet die Konfiguration lokal?

Antwort

1

Die gute Praxis ist es, einen Dienst zu verwenden und diesen Dienst dort einzufügen, wo Sie diese Informationen benötigen.

Beachten Sie, dass das, was Sie definieren, keine Fabrik ist, sondern ein Service. Die Factory ist die zum Erstellen des Service verwendete Funktion. Die Tatsache, dass Sie facility() anstelle von service() oder provider() verwenden, um diesen Service zu definieren, ist ein Implementierungsdetail.

Der Dienst wird daher schlecht benannt. In sollte "Konfiguration" statt "ConfigFactory" heißen. Dienste beginnen normalerweise mit einem Kleinbuchstaben.

+0

Danke für die Information. Mein Verständnis des Unterschieds zwischen Fabriken und Dienstleistungen ist bestenfalls unscharf. – rex

+0

Also funktioniert Ihre vorgeschlagene Methode darin, dass es die Daten einmal erhält und intern speichert? Ich möchte nicht, dass der Client jedes Mal zum Server geht, um Konfigurationsdaten von verschiedenen Controllern zu erhalten. – rex

+0

Es gibt keinen solchen Komponententyp wie eine Fabrik in Angular. Es gibt Dienstleistungen, das ist alles. Aber Dienste können mit mehreren "Rezepten" definiert werden: service(), factory(), provider(), value(), constant(). https://docs.angularjs.org/guide/providers. Ein Service ist ein Singleton. Wenn Sie also ein Ergebnis in einem Service speichern und jedes Mal zurückgeben, verwenden alle Controller, Filter usw., die diesen Service verwenden, die gleiche eindeutige Serviceinstanz und erhalten den gleichen zwischengespeicherten Wert. –