这是在BackBone模型中:
calculatePrice() {
}
initialize() {
_.bindAll(this, 'caclulatePrice');
this.on("change", function() {
this.calculatePrice();
});
}
问题在于,当编译内部时,这就是这个,而不是_this实际上是模型。
环顾四周(基于CoffeeScript中的类似案例)看起来答案与=>有关。但我无法做到这一点,例如
this.on("change", function() => {
无法编译。
我需要做些什么来使内部引用BackBone模型(它所在的类)?
更新
这有效,但它不是'正确'的方式。
let that = this;
this.on("change", function() { that.caclulatePrice() });
答案 0 :(得分:1)
您将所需的this
绑定到calculatePrice
函数:
_.bindAll(this, 'calculatePrice'); // I'm assuming that 'caclulatePrice' is a typo...
不是您传递给this.on
的匿名函数。
更好的方法是放弃_.bindAll
并将第三个参数中所需的this
提供给on
:
this.on('change', this.calculatePrice, this);
或者,如果您真的想使用_.bindAll
,只需删除匿名函数:
_.bindAll(this, 'calculatePrice');
this.on('change', this.calculatePrice);
您还可以使用listenTo
为您设置适当的this
。