Hapi Typescript - 控制器有 'this' 未定义
Hapi Typescript - Controller has 'this' as undefined
我的 Hapi 路由调用我的处理程序 handler: myController.get
,它被定义为
const myController = new MyController();
MyController 只是扩展了 BaseController,如下所示
export class MyController extends BaseController<MyClass> {
constructor () {
super(new MyDataAccess());
}
}
BaseController 为
export class BaseController<T> {
constructor(protected dataAccess: BaseDataAccess<T>) { }
public async getAll(request, reply) {
console.log('BaseController this', this);
奇怪的是,this
打印为 'undefined',这没有任何意义,因为我已经在路由文件中实例化了 myController,它应该启动了一个新实例this
要调用的 BaseController,对吗?
问题如何从 Hapi 路由处理程序访问 MyController 的实例?
为了修复,我只需要绑定控制器以保留 'this' 上下文
handler: myController.get.bind(myController)
以上评论由 CRice 提供,"In this case, I would bind the method to its instance. EG: handler: myController.get.bind(myController)" – CRice 10 月 31 日 23:10
我的 Hapi 路由调用我的处理程序 handler: myController.get
,它被定义为
const myController = new MyController();
MyController 只是扩展了 BaseController,如下所示
export class MyController extends BaseController<MyClass> {
constructor () {
super(new MyDataAccess());
}
}
BaseController 为
export class BaseController<T> {
constructor(protected dataAccess: BaseDataAccess<T>) { }
public async getAll(request, reply) {
console.log('BaseController this', this);
奇怪的是,this
打印为 'undefined',这没有任何意义,因为我已经在路由文件中实例化了 myController,它应该启动了一个新实例this
要调用的 BaseController,对吗?
问题如何从 Hapi 路由处理程序访问 MyController 的实例?
为了修复,我只需要绑定控制器以保留 'this' 上下文
handler: myController.get.bind(myController)
以上评论由 CRice 提供,"In this case, I would bind the method to its instance. EG: handler: myController.get.bind(myController)" – CRice 10 月 31 日 23:10