2015-07-20 84 views
1

我正在使用qwest庫來從服務器加載數據。.bind(this)in coffee-react

本來,我寫道:

qwest.get("/api/getData") 
    .then(function(response){ 
     this.setState({data: response}) 
    }.bind(this)) 

這工作得很好。

在CoffeeScript中我寫道:

qwest.get("/api/getData") 
    .then (response) -> 
      this.setState({data: response}) 
    .bind(this) 

這是行不通的。

我敢肯定,問題就出在.bind(本),因爲它會編譯爲:

qwest.get("/api/getData") 
    .then(function(response) { 
      return this.setState({ 
       conf: response 
      }); 
    }).bind(this); 

.bind()是不是在大括號的前面。

我該如何解決這個問題?

回答

1

只需添加一些括號中的(response) -> ...各地:

qwest.get("/api/getData") 
    .then ((response) -> 
      this.setState({data: response}) 
    ).bind(this) 

其編譯成

qwest.get("/api/getData").then(function(response) { 
    return this.setState({data: response}); 
}.bind(this)); 

這是預期的效果。

相關問題