Ich versuche, ein myApp.config-Modul zu erstellen, um einige Einstellungen für meine App zu speichern. Ich habe eine config.js-Datei geschrieben:
angular.module('myApp.config', [])
.constant('APP_NAME','My Angular App!')
.constant('APP_VERSION','0.3');
Ich habe es meiner app.js (eckiger Samen) hinzugefügt:
angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives', 'myApp.controllers', 'myApp.config']).
Ich habe es der Datei index.html hinzugefügt und jetzt versuche ich herauszufinden, wie ich es in meine Controller bekomme. Ich habe versucht:
angular.module('myApp.controllers', ['myApp.config'])
.controller('ListCtrl', ['$scope', 'myApp.config', function($scope, $config) {
$scope.printme = $config;
}])
aber ich bekomme:
Unbekannter Anbieter: myApp.configProvider <- myApp.config
Ich mache hier wahrscheinlich etwas falsch, irgendwelche Ideen?
javascript
angularjs
Asaf
quelle
quelle
Antworten:
Ich denke nicht, dass es gültig ist, den Modulnamen in einer solchen Injektion zu verwenden. Sie können die Konstanten jedoch einfach nach Namen einfügen:
angular.module('myApp.controllers', ['myApp.config']) .controller('ListCtrl', ['$scope', 'APP_NAME', function($scope, appName) { $scope.printme = appName; }]);
quelle
.constant
in einem Modul eingerichtet haben, können Sie den Wert an einer anderen Stelle injizieren.angular.module('app').constant('appSettings', { version: '1.0', appName: 'myApp'});
Dann injizieren Sie es in einen Controller oder .config oder was auch immer Sie wollenangular.module('app').controller('simpleCtrl', ['appSettings', function(appSettings) { $scope.valueInIsolatedScope = appSettings.version; }])
Ich denke, der einfachste Ansatz besteht darin, eine Konstante mithilfe eines Objektliteral hinzuzufügen. Dies passt meiner Meinung nach zu den meisten Anwendungsfällen für die Anwendungskonfiguration, da es ein komplexes Konfigurationsobjekt unterstützt. Der
constant
Schritt wird auch frühzeitig ausgeführt, bevor andere Anbieter registriert werden.angular.module('myApp').constant('cfg', { url: 'https://myapi.com/v1/', httpTimeout: 5000 })
Um es zu benutzen, spritzen Sie einfach
cfg
:angular.module('myApp').factory('user', function(cfg, $http){ // cfg and $http together at last })
quelle
angular.module('myApp').constant('keyCodes', { left: 36, right: 38 })'
und :angular.module('myApp').factory('myComponent', function(keyCodes) { keyCodes.left })
?Es sollte auch beachtet werden, dass die Lösung von SimplGy bedeutet, dass das 'cfg'-Objekt eine Konstante ist, die Eigenschaften dieses Objekts jedoch nicht. Dies bedeutet, dass Sie 'cfg' nicht wie folgt neu zuweisen können:
cfg = { randomProperty: randomValue };
Sie können die Eigenschaften des 'cfg'-Objekts wie folgt neu zuweisen:
cfg.url = 'BrandNewURL.com'; cfg.httpTimeout = 30;
quelle
Überprüfen Sie die Verwendung von Konstanten in diesem Beispiel:
angular .module('abp001App', ['ngRoute']) .constant("myConfig", { "url": "http://localhost", "port": "80" }) .config(function ($routeProvider) { $routeProvider .when('/', { templateUrl: 'views/main.html', controller: 'MainCtrl' }) .otherwise({ redirectTo: '/' }); }) .controller('MainCtrl', function (myConfig) { // Do something with myConfig... });
quelle