【发布时间】:2015-07-31 07:50:39
【问题描述】:
我的 componentDidMount 中有一个监听器设置:
updateBasketTotal: function() {
BasketService.getBasketTotal(function(data){
this.setState({
selectedPeopleCount: data.TotalMembers
});
}.bind(this));
},
componentDidMount: function() {
this.updateBasketTotal();
this.subscribeToChannel(basketChannel,"selectAll",this.listenerSelectAll);
this.subscribeToChannel(basketChannel,"removePersonFromBasket",this.listenerRemovePersonFromBasket);
this.subscribeToChannel(basketChannel,"addPersonToBasket",this.listenerAddPersonToBasket);
this.subscribeToChannel(basketChannel,"addArrayToBasket",this.listenerAddArrayToBasket);
},
listenerAddArrayToBasket: function(data){
BasketService.addPerson(data.arrayToPush,function(){
this.updateBasketTotal();
});
},
listenerAddPersonToBasket: function(data){
BasketService.addPerson(data.personId,function(){
this.updateBasketTotal();
});
},
listenerRemovePersonFromBasket: function(data){
BasketService.removePerson(data.personId,function(){
this.updateBasketTotal();
});
},
listenerSelectAll: function(data){
BasketService.selectAll(data.selectAll, function () {
this.updateBasketTotal();
});
}
但是,如果我不在此页面上时发布消息,则会收到错误消息:
this.updateBasketTotal 不是函数
谁能告诉我如何使用 this.updateBasketTotal?
我认为这是“this”的问题,但不知道如何解决。提前致谢
更新:
已尝试将 bind() 添加到侦听器:
listenerAddPersonToBasket: function(data){
BasketService.addPerson(data.personId,function(){
this.updateBasketTotal();
}.bind());
},
但没有快乐,有什么想法吗?
【问题讨论】:
-
你可以在
listenerAddArrayToBasket添加你的听众时做(function(){this.updateBasketTotal();}.bind(this))...你对updateBasketTotal做了同样的事情
标签: javascript reactjs this