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

前端之家收集整理的这篇文章主要介绍了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

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

原文链接:https://www.f2er.com/js/152214.html

猜你在找的JavaScript相关文章