2016-11-09 42 views
1

如何在OnSuccess和OnFailure中獲取this.ID?如何訪問此。在OnSucess()或OnFailure()

我正在嘗試使用pagemethods將字典導入到我的角度項目中。

ID:number = 1; 

ngAfterViewInit() { 
    window['PageMethods'].getCustomAction(this.OnSuccess, this.OnFailure); 
} 

OnSuccess(succes:any) 
{ 
    if(1 == this.ID) 
    { 
     //Code 
    } 
} 

OnFailure(error:any) 
{ 

} 

回答

3

只是包裝回調方法拉姆達保存this背景:

window['PageMethods'].getCustomAction(
    (success: any) => this.OnSuccess(success), 
    (error: any) => this.OnFailure(error) 
); 

然後你可以使用你的類成員OnSuccessOnFailure

+0

它完美的工作,謝謝。 我不知道我該如何學會這個,有什麼建議如何學習這些東西? – Kapein

+1

那麼,JS中的'this'上下文確實是一件神奇的事情。因此,經驗法則是始終使用lambdas('()=> ...')而不是內聯函數,因爲它們會自動綁定到已定義的上下文,而不僅僅傳遞函數,就像您在你的問題上做了。那麼你應該沒問題:D – rinukkusu

+1

雖然如果你想添加更多的行來執行,你必須明確地返回一些東西,如果需要的話,而沒有大括號體的lambdas隱式地返回值,他們被稱爲。 [更多關於這裏。](http://stackoverflow.com/questions/22939130/when-should-i-use-arrow-functions-in-ecmascript-6/23045200#23045200) – rinukkusu