尝试使用typescript将$ window注入角度工厂

时间:2015-12-13 02:11:10

标签: angularjs typescript

我正试图将$ winow注入我的工厂。

这是我的工厂和班级定义

 export interface IAuthToken {
 }

 export class AuthToken implements IAuthToken {
     storage: Storage;
     constructor(private $window: ng.IWindowService) {
        this.storage = this.$window.localStorage;
     }

    factory.$inject = ['$window'];
    function factory($window: ng.IWindowService): IAuthToken {
        return new AuthToken(this.$window);
    }

    angular
        .module('test')
        .factory('app.common.auth.AuthToken', factory);
}

当我调试代码时,$ window总是设置为undefined。我在注册工厂本身时尝试添加注入,我仍然将$ window视为未定义?

function factory($window: ng.IWindowService): IAuthToken {
    return new AuthToken(this.$window);
}

angular
    .module('test')
    .factory('app.common.auth.AuthToken', ['$window',factory]);

非常感谢任何帮助。 提前谢谢。

1 个答案:

答案 0 :(得分:3)

你快到了。您需要将工厂声明移到AuthToken级之外且位于其下方。你可以改为:

```

export interface IAuthToken {}

export class AuthToken implements IAuthToken {

    static Id: string = 'app.common.auth.AuthToken';

    storage: Storage;
    constructor(private $window: ng.IWindowService) {
        this.storage = this.$window.localStorage;
    }
}

function factory($window: ng.IWindowService): IAuthToken {
    return new AuthToken($window);
}

angular
    .module('test')
    .factory(AuthToken.Id, ['$window', factory]);

```