gpt4 book ai didi

javascript - 我无法让 $inject 注释在我的 Typescript AngularJS 类中工作

转载 作者:行者123 更新时间:2023-11-28 19:27:15 25 4
gpt4 key购买 nike

我试图让 $inject 注释在我的 Typescript 类上工作,但它似乎总是未定义。谁能建议我做错了什么?

export class PicasaAuthenticator {

static $inject = [ '$window' ];
constructor( private $window : ng.IWindowService )
{
}

public startAuthentication()
{
var authUrl:string = "https://accounts.google.com/o/oauth2/auth";
authUrl += "?client_id=" + client_id;
authUrl += "&response_type=token";
authUrl += "&scope=https://picasaweb.google.com/data/";
authUrl += "&redirect_uri=" + window.location;

if ( this.$window )
{
this.$window.location.assign( authUrl );
}
else
{
alert( "nav: " + authUrl );
}
}
}

app.controller('AuthenticationControl', [ Picasa.PicasaAuthenticator ] );

如果我删除 $inject 注释并将 Controller 创建更改为:

app.controller('AuthenticationControl', [ '$window', Picasa.PicasaAuthenticator ] );

它有效。

(我知道 PicasaAuthenticator 可能应该是 Single 并定义为服务)

非常感谢

最佳答案

这是因为您在注册服务时再次使用括号表示法覆盖静态 $inject 属性中提供的注入(inject)参数。括号表示法的使用再次使用替代语法指定了显式依赖注释,并且它没有列出您的情况中的任何注入(inject)参数。因此,您不会看到 Angular DI 过程注入(inject)任何东西。

app.controller('AuthenticationControl', [ Picasa.PicasaAuthenticator ] );
// ^__ Remove this

就这样做:-

 app.controller('AuthenticationControl', Picasa.PicasaAuthenticator);

关于javascript - 我无法让 $inject 注释在我的 Typescript AngularJS 类中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27623744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com