在 angularJS 中覆盖模块值/常量的最佳方法

2024-05-22

我用 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", [])
.value('apiPrefix', '/api/data')
.factory('Display', function(apiPrefix){
  return {
    pref: function(){
      return apiPrefix;
    }
  }
});




angular.module('myapp', ['data'])
  .value('apiPrefix', '/api2/data')
  .controller('MainCtrl', function($scope, Display)    {
      $scope.name = Display.pref();
  });

看到这里的笨蛋:http://plnkr.co/edit/k806WE http://plnkr.co/edit/k806WE

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 angularJS 中覆盖模块值/常量的最佳方法 的相关文章

随机推荐