如何将值从 node/express 应用程序传递到 AngularJS 控制器
how to pass a value from node/express app to an AngularJS controller
我正在开发一个基于 mean.js 样板的应用程序。
在我的一个 Angular 控制器中,我需要 "know" 该应用程序是 运行 在开发、测试还是生产中。
当托管 Node 应用程序启动时,这是通过 NODE_ENV 环境变量指示的,因此 Node 知道它的 运行。
如何将这些知识传递到应用程序的 Angular 部分?
如果您在后端了解这些知识,为什么不创建一个可以在 AngularJS run
方法中调用的端点。虽然我不知道你的后端实现的细节,但你肯定可以 return 一个代表此信息的变量。您可以简单地制作如下内容...
app.run(['$rootScope', '$http', function ($rootScope, $http) {
$http.get('/yourEndoint').success(function(response) {
$rootScope.whereAmI = response.whereAmI;
});
}]);
其中 wereAmI
是您 return 从后端和 return 到此调用的一些值。如果您将它放在 $rootScope
上,所有其他 $scope
将继承此值,因此您将了解 "where you're at" 应用范围。
有关 run
函数的更多信息,请查看 AngularJS module docs
Run blocks are the closest thing in Angular to the main method. A run
block is the code which needs to run to kickstart the application. It
is executed after all of the services have been configured and the
injector has been created. Run blocks typically contain code which is
hard to unit-test, and for this reason should be declared in isolated
modules, so that they can be ignored in the unit-tests.
在我的例子中,我使用 gulp/grunt 构建任务来 select 请求的 config.js
文件(即 production.config.js
)。然后你可以使用类似 npm args 的东西来设置 --env=production
或 --env=development
变量当 运行 你的构建任务,然后 gulp/grunt 任务使用它来抓取请求的配置文件。
然后您的实际配置文件将只是一个 angular.constant(...)
组件,其中包含用于您的应用程序的设置。
我正在开发一个基于 mean.js 样板的应用程序。
在我的一个 Angular 控制器中,我需要 "know" 该应用程序是 运行 在开发、测试还是生产中。
当托管 Node 应用程序启动时,这是通过 NODE_ENV 环境变量指示的,因此 Node 知道它的 运行。
如何将这些知识传递到应用程序的 Angular 部分?
如果您在后端了解这些知识,为什么不创建一个可以在 AngularJS run
方法中调用的端点。虽然我不知道你的后端实现的细节,但你肯定可以 return 一个代表此信息的变量。您可以简单地制作如下内容...
app.run(['$rootScope', '$http', function ($rootScope, $http) {
$http.get('/yourEndoint').success(function(response) {
$rootScope.whereAmI = response.whereAmI;
});
}]);
其中 wereAmI
是您 return 从后端和 return 到此调用的一些值。如果您将它放在 $rootScope
上,所有其他 $scope
将继承此值,因此您将了解 "where you're at" 应用范围。
有关 run
函数的更多信息,请查看 AngularJS module docs
Run blocks are the closest thing in Angular to the main method. A run block is the code which needs to run to kickstart the application. It is executed after all of the services have been configured and the injector has been created. Run blocks typically contain code which is hard to unit-test, and for this reason should be declared in isolated modules, so that they can be ignored in the unit-tests.
在我的例子中,我使用 gulp/grunt 构建任务来 select 请求的 config.js
文件(即 production.config.js
)。然后你可以使用类似 npm args 的东西来设置 --env=production
或 --env=development
变量当 运行 你的构建任务,然后 gulp/grunt 任务使用它来抓取请求的配置文件。
然后您的实际配置文件将只是一个 angular.constant(...)
组件,其中包含用于您的应用程序的设置。