将服务用作配置中的提供者,但也用作控制器中的服务

时间:2018-10-24 15:41:06

标签: javascript angularjs angularjs-service angularjs-provider

所以我有这项服务:

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

module.service('userService', ['$q', '$http', 'firebaseService', function($q, $http, firebaseService) {
    this.isAdmin = undefined;
    this.userIdToken = undefined;
    let defered = $q.defer();
    this.promise = defered.promise;

    this.setIdToken = function (token) {
        this.userIdToken = token;
        defered.resolve(token);
        console.log("resolved in user service");
    };}])

我想在我的应用程序配置中使用它。 我尝试了建议的here,但事实是,此方法创建了我作为提供者的服务的另一个实例。

因此,当在我的控制器中调用setIdToken()时,我的承诺将在一个实例中得到解决。但是,当我在应用程序配置中等待它时,它永远不会被解析(服务的其他实例,变量的其他实例)。

因此,我的目标是将该服务用作控制器中的服务,该方法调用一种方法来解析在服务中声明的promise,然后在我的应用程序配置中等待该promise的解析。

这也是我在应用程序配置中尝试过的方法,但未成功:

    function config(userService) {
            userService.promise.then(function (token) {
                console.log("token", token);
            });
        }

  config.$inject = ["userServiceProvider"];
  app.config(config);

有什么想法吗? 预先感谢

0 个答案:

没有答案