如何将节点/快车应用程序的值传递给AngularJS控制器

我正在开发一个基于mean.js锅炉板的应用程序。

在我的一个angular控制器中,我需要“知道”应用程序是否在开发,testing或产品中运行。

当宿主节点应用程序启动时,这通过NODE_ENV环境variables指示,所以节点知道它在哪里运行。

如何将这些知识传递到应用的angular度部分?

如果你在后台有这方面的知识,那么为什么不用一个AngularJS run方法来调用一个端点。 虽然我不知道后端实现的细节,当然你可以返回一个表示这个信息的variables。 你可以简单地制作如下的东西…

 app.run(['$rootScope', '$http', function ($rootScope, $http) { $http.get('/yourEndoint').success(function(response) { $rootScope.whereAmI = response.whereAmI; }); }]); 

wereAmI是你从后端返回的一些价值,并返回到这个调用。 如果你把它放在$rootScope ,所有其他的$scope将inheritance这个值,所以你将知道“你在哪里”的应用程序范围。

有关runfunction的更多信息,请查看AngularJS模块文档

对于主要方法来说,运行块是Angular中最接近的东西。 运行块是需要运行以启动应用程序的代码。 在所有服务已经configuration完成并且注入器已经创build之后执行。 运行块通常包含很难进行unit testing的代码,因此应该在隔离模块中声明,以便在unit testing中可以忽略它们。

在我的情况下,我使用gulp / grunt构build任务来select请求的config.js文件(即production.config.js )。 然后,在运行构build任务时,您可以使用类似npm的参数来设置--env=production--env=developmentvariables,然后由gulp / grunt任务使用它来获取所需的configuration文件。

然后,您的实际configuration文件将只是一个angular.constant(...)组件与您的应用程序使用的设置。