gpt4 book ai didi

javascript - 在 AngularJS 的类方法中无法访问注入(inject)的依赖项

转载 作者:行者123 更新时间:2023-11-30 00:28:44 26 4
gpt4 key购买 nike

我正在为 Angular Controller 使用 ES6 类,我遇到了依赖注入(inject)的轻微烦恼。以这个 Controller 为例(显然不是真正的类)。

class PersonController {
constructor(MyDependency) {
MyDependency.test(); // this works
}

sendEvent() {
MyDependency.test(); // MyDependency is undefined
}
}

PersonController.$inject = ['MyDependency'];

export default PersonController;

运行构造函数时,发现依赖关系很好。但是,如果我调用 sendEvent 方法(或任何其他类方法),则不再定义依赖项。我之前通过将它附加到构造函数中的 this 来解决这个问题,例如this.MyDependency = MyDependency;.

有没有其他方法可以在不挂断 this 依赖的情况下实现这一点?

最佳答案

这是因为在您的方法中无法访问 myDependency。在构造函数中执行 this.myDependency = myDependency,然后在您的方法中执行 this.my dependency.test()。

编辑:下面是另一种方法:-

let _myDependency;    
class PersonController {
constructor(MyDependency) {
_myDependency = MyDependency;
_myDependency.test(); // this works
}

sendEvent() {
_myDependency.test(); // this will work
}
}

另一种模拟私有(private)属性的方法是:- 使用 Symbols/weakmaps 或围绕整个类创建闭包并将 MyDependency 存储在此闭包中。

关于javascript - 在 AngularJS 的类方法中无法访问注入(inject)的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30422360/

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