2016-12-16 35 views
0

當我嘗試使用第1類中的sendUserMessage()時,出現content未定義的錯誤。我知道它與this有關,但我無法找到適合我情況的答案。Typescript參考權限在回調中

第1類:

@ViewChild(Content) content: Content; 

    sendUserMessage(message) { 
     this.class2object.sendMessageToBackend(message,this.createMessage); 

    } 


    createMessage(jsonMessage) { 
     this.content.scrollToBottom(300); 
    } 

2類:

sendMessageToBackend(ChatMessage: string, handler: Function) { 
    //build requests 
    var response: string; 
    var time = new Date().getTime(); 
    var json = JSON.stringify({ message: ChatMessage, sessionID: "", timestamp: time }); 
    var headers = new Headers(); 
    headers.append("Content-Type", 'application/json'); 

    // send request 
    this.http.post('http:somethhing.smth', 
     json, { 
      headers: headers 
     }).subscribe(data => { 
      response = JSON.parse(JSON.stringify(data.text())); 
      handler(response); 
     }, 
     () => console.log("error") 
     ); 
} 

注:此處的方法是簡化了更好的理解。

我得到的錯誤EXCEPTION: Cannot read property 'content' of undefined

我知道,一個解決辦法是在2級移動方法1類,但我真的盡力避免這種情況。

+0

在'createMessage'內使用'console.log(this.content)'並檢查它是否爲空。 –

回答

0

使用綁定功能

this.class2object.sendMessageToBackend(message, this.createMessage.bind(this)); 

希望它能幫助。