微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/js/152214.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐