Ich arbeite an der Einrichtung von Konfigurationsdateien in AngularJS. Ist es möglich, eine Fabrik in AngularJS zu erstellen, deren Schlüssel nicht überschrieben werden kann? Zum Beispiel kann ich eine Konstante wie folgt aufgebaut, die nichtAngularJS "Constant" Factory
überschrieben werden kannmodule.constant (‚Tiere‘, { „Katze“: „Miau“, „Hund“: „Wuff“});
Aber ich möchte so etwas tun, die für überschrieben Werte können aber nicht die Fabrik selbst
module.value('catSound','meow')
.value('dogSound','woof')
.factory('animals', ['catSound','dogSound', function(catSound, dogSound) {
return {
"cat": catSound,
"dog": dogSound
}
});
Die obige Fabrik kann für ein anderes Stück Code überschrieben werden, so dass module.factory('animals',function(){ return 7 })
haben und alles kaputt machen. Als Fabrik können die einzelnen Werte jedoch (und sollten) überschreibbar sein, also sollte ich in der Lage sein, module.value('catSound','hiss')
zuzuordnen und Sachen zu haben, die noch arbeiten, wie erwartet.
Ich habe versucht, in Konstanten zu injizieren, aber soweit ich das verstehen konnte, ist das nicht möglich. Wie kann ich verhindern, dass meine Factory-Deklaration überschrieben wird? Ich realisiere, dass Konstante ist wahrscheinlich nicht der richtige Begriff bei der Beschreibung, was ich will, aber ich möchte die Fabrik Konstante konstant sein.
Können Sie einen kleinen Einblick in Ihren Anwendungsfall geben? Das Überschreiben von Fabriken bietet große Vorteile, zum Beispiel beim Testen von Tests. –
Im Wesentlichen versuche ich nur eine Standardkonfigurationsdatei zu erstellen, die kopiert werden kann und ihre Parameter modifiziert werden können, um die Bedürfnisse einzelner Server zu erfüllen (dh wir wollen eine API URL, die standardmäßig auf eine Entwicklungs-API verweist, aber auf Der Produktionsserver soll auf die Produktions-API verweisen. Die Idee war, _all_ der Konfigurationswerte in einer Datei beizubehalten, um das Aktualisieren der Standardwerte zu vereinfachen, während verhindert wird, dass Entwickler die Werksausgabe in ihrer lokalen Konfiguration versehentlich ändern. 'value()' würde individuelle Änderungen erlauben. Ich bin sicher, es gibt eine bessere Methode –
Haben Sie jemals eine Lösung für Ihr Problem gefunden? Ich beschäftige mich im Moment mit dem gleichen Thema. –