在 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
。
这是 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
。