【问题标题】:how to pass a value from node/express app to an AngularJS controller如何将值从 node/express 应用程序传递到 AngularJS 控制器
【发布时间】:2015-08-18 09:17:54
【问题描述】:

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

在我的一个 Angular 控制器中,我需要“知道”应用程序是在开发、测试还是产品中运行。

当托管 Node 应用启动时,这通过 NODE_ENV 环境变量指示,因此 Node 知道它在哪里运行。

如何将这些知识传递到应用程序的 Angular 部分?

【问题讨论】:

    标签: javascript angularjs node.js mean-stack meanjs


    【解决方案1】:

    如果您在后端有这方面的知识,为什么不创建一个端点,您可以在 AngularJS 中调用 run 方法。虽然我不知道您的后端实现的细节,但您肯定可以返回一个代表此信息的变量。你可以简单地制作类似下面的东西......

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

    wereAmI 是您从后端返回并返回到此调用的某个值。如果您将其放在 $rootScope 上,所有其他 $scope 将继承此值,因此您将了解应用程序范围内的“您所在的位置”。

    有关run 函数的更多信息,请查看AngularJS module docs

    Run 块是 Angular 中最接近 main 方法的东西。一次跑步 block 是启动应用程序需要运行的代码。它 在所有服务都已配置并且 注射器已创建。运行块通常包含以下代码 难以进行单元测试,因此应该单独声明 模块,以便在单元测试中可以忽略它们。

    【讨论】:

      【解决方案2】:

      就我而言,我使用 gulp/grunt 构建任务来选择请求的config.js 文件(即production.config.js)。然后,您可以在运行构建任务时使用npm args 之类的东西来设置--env=production--env=development 变量,然后gulp/grunt 任务使用该变量来获取请求的配置文件。

      那么您的实际配置文件将只是一个 angular.constant(...) 组件,其中包含用于您的应用程序的设置。

      【讨论】:

      • 非常感谢您的建议!我选择了另一个作为答案,因为它更自然地适合我的流程中的其他元素(至少现在是这样)
      猜你喜欢
      • 2016-09-30
      • 2016-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多