Ich habe ein Modul in angularJS geschrieben, das alle Backend-Kommunikationen einkapselt. Für größere Flexibilität habe ich das api-Präfix als konstanten Wert auf dem Modul (könnte Wert sein, da ich es nicht in der Config-Phase verwende). so etwas wieDie beste Methode zum Überschreiben von Modulwerten/Konstanten in angularJS
angular.module('myapp.data').constant('apiPrefix', '/api/data');
Jetzt möchte ich dieses Modul aus zwei verschiedenen Anwendungen nutzen. Einer benutzt/api1/data und der andere/api2/data und ich möchte dies während der Config-Phase der Anwendung ändern. Ich weiß, wie man das mit einem Provider macht, aber einen Provider zu haben, der einen Wert hält, scheint mir ein Overkill zu sein. Kann ich verwendete Modulkonstanten oder Werte aus der Anwendungskonfigurationsphase ändern?
so etwas wie:
angular.module("data", [])
.value('apiPrefix', '/api/data')
.factory('display', function(apiPrefix){
return {
pref: function(){
console.log(apiPrefix);
return apiPrefix;
}
}
});
angular.module("myApp",['data'])
.config(['apiPrefix', function(prefix){
prefix = 'https:/api/data';
}])
.controller("Example", function($scope, display) {
$scope.prefix = display.pref;
});
Nicht sicher, aber Sie können versuchen, es auf 'run' Bühne zu tun. – Chandermani
Ja, Sie können einen Wert in der Run-Phase zu aktualisieren, und Sie können eine Konstante in Config injizieren, aber da es eine Konstante ist, kann es nicht geändert werden http://StackOverflow.com/Questions/13035568/angular-JS-value-not -injected-in-config – shaunhusain
Also was Sie sagen, ist, dass es ein Wert anstelle einer Konstante im Modul sein sollte und ändern Sie es auf Run-Phase der Anwendung anstelle der Config? – masimplo