【问题标题】:How to use constant module in angular?如何在角度中使用常量模块?
【发布时间】:2014-06-04 20:14:24
【问题描述】:

在我的 Angular 应用程序中,我有一个设置模块,我将其设为常量。我认为它应该是一个常量因为常量在其他提供方法之前应用

我还有 2 个服务:getUserIdServicegetTokenService 分别让我得到 userIdtoken

angular.module('app').constant('settings', {
    streamServer: 'http://someurl.com:9009',
    userId: /* $getUserIdService.getUserId() */
    token: /* $getTokenService.getToken() */
});

从我在 api 中看到的constant 没有构造函数,所以我无法传递任何依赖项(getUserIdServicegetTokenService

此模块需要全局可用,并且不必是常量。我只需要在任何其他模块之前对其进行初始化。

我该怎么做?

【问题讨论】:

  • 一方面,您似乎在说需要在实例化服务之前进行设置。另一方面,您似乎在说它取决于其他服务。这些是相互矛盾的陈述。
  • 你是对的,我只是想出了我真正需要的东西。 getUserIdService 和 getTokenService 应该是常量,我应该在服务“设置”中调用它们
  • 还可以考虑使用提供者而不是服务。它将在所有服务之前加载。如果需要,您可以通过 this.$get 在提供程序中进行后期依赖注入。

标签: angularjs


【解决方案1】:

使用 Angular 模块运行方法来初始化您的数据。您可以将您的服务注入到 run 方法中并使用它来初始化您的数据

示例演示:http://plnkr.co/edit/TW5r7YM5gkevWr2hjmZs?p=preview

JS:

var app = angular.module('plunker', []);

app.value('settings', {
    streamServer: 'http://someurl.com:9009',
    userId:null ,/* $getUserIdService.getUserId() */
    token: null/* $getTokenService.getToken() */
}).run(function($http,$timeout,settings){//inject your services here
  settings.userId = 'guru';//call services to get the user id
  settings.token = 'tkn39';
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-31
    • 2021-12-18
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多