javascript – 在angularJS中覆盖模块值/常量的最佳方式

我在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

同样的事情也适用于角常数.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...