我在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
同样的事情也适用于角常数.
原文地址:https://www.jb51.cc/js/152214.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。