我在angularJS中编写了一个封装所有后端通信的模块.为了更大的灵活性,我将api前缀作为模块的常量值(可能是值,因为我没有在配置阶段使用它).
所以这样的东西
所以这样的东西
angular.module('myapp.data').constant('apiPrefix','/api/data');
现在我想从两个不同的应用程序使用这个模块.一个使用/ api1 / data,另一个/ api2 / data,我想在应用程序的配置阶段更改它.
我知道如何使用提供商,但让提供商持有价值似乎对我来说太过分了.可以从应用程序配置阶段修改使用的模块常量或值吗?
就像是:
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; });
解决方法
要覆盖模块值,可以在稍后的模块中重新定义角度值.我相信不应该做模块配置时间.
angular.module("data",'/api/data') .factory('Display',function(apiPrefix){ return { pref: function(){ return apiPrefix; } } }); angular.module('myapp',['data']) .value('apiPrefix','/api2/data') .controller('MainCtrl',Display) { $scope.name = Display.pref(); });
看到这里的空间:
http://plnkr.co/edit/k806WE
同样的事情也适用于角常数.