一尘不染

使用Angular JS将常量注入其他模块配置

angularjs

我想在整个应用程序中共享一些变量,例如基本路径。这些变量需要在模块配置期间访问。我的意见是,我可以为此使用常量或提供程序。

我有几个模块,每个模块都有自己的路由配置。例如,在这些路由配置中,我想访问一些设置。

这适用于应用程序模块配置,但不适用于其他模块配置(对于其他模块上的控制器而言),我总是收到“未知提供者:来自myApp.orders的信息”。

var myApp = angular.module('myApp', ['myApp.orders']);



myApp.constant('info', {

  version : '1.0'

});



myApp.config(function(info) {

  console.log('app config: ' + info.version);

});



myApp.controller('MyController', function (info) {

  console.log('controller: ' + info.version);

});



var orders = angular.module('myApp.orders', []);



// Remove comments to see it fail.



//orders.config(function(info) {

//  console.log('orders config: ' + info.version);

//});


<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>



  <div ng-app="myApp" class="container" ng-controller="MyController">

  </div>

我想我只是错过了一些细节,您有想法吗?


阅读 229

收藏
2020-07-04

共1个答案

一尘不染

您的info常数在myApp模块中定义。如果我正确理解了您的问题,则希望在其他模块(例如myApp.orders模块)中使用常量。如果是这样,那么您需要将myApp注入myApp.orders中,但是看起来您想做相反的事情。一种解决方案是将常量解耦到独立模块中,并在需要时将其作为依赖项注入。

angular.module('constants', []) 
  .constant(...);

angular.module('myApp', ['constants', 'myApp.orders'])
  ...

angular.module('myApp.orders', ['constants'])
  ...
2020-07-04