在 TypeScript/Backbone 情况下丢失对此的引用

Lost reference to this in TypeScript/Backbone situation

这是 BackBone 型号:

calculatePrice() {

}

initialize() {
            _.bindAll(this, 'caclulatePrice');
            this.on("change", function() {
                this.calculatePrice();    
            });
}

问题是当它编译内部时,this 只是 this 而不是实际上是模型的 _this。

环顾四周(并基于 CoffeeScript 中的类似案例)看起来答案与 => 但我无法完成这项工作,例如

this.on("change", function() => {

无法编译。

我需要做什么才能使内部 this 引用 BackBone 模型(它所在的 class)?

更新:

这可行,但不能是 'right' 方式。

let that = this;
this.on("change",  function() { that.caclulatePrice()  });

您正在将所需的 this 绑定到 calculatePrice 函数:

_.bindAll(this, 'calculatePrice'); // I'm assuming that 'caclulatePrice' is a typo...

不是您要交给 this.on 的匿名函数。

更好的方法是删除 _.bindAll 并在 on 的第三个参数中提供所需的 this:

this.on('change', this.calculatePrice, this);

或者,如果你真的想使用_.bindAll,就把匿名函数去掉:

_.bindAll(this, 'calculatePrice');
this.on('change', this.calculatePrice);

您也可以使用 listenTo,它将为您设置合适的 this