2016-05-20 2 views
0
http:Http; 

constructor(http:Http){ 
this.http = http; 
} 

myFunction(){ 

//this.http works great here! 

     this.providerobject.getSomething(function(err, result) { 

     //this.http here is undefined! I need to use it here 

. 
. 
. 

С кодом, показанным выше, я пытаюсь сделать запрос HTTP внутри функций provider.getSomething, но мне кажется, this.http объект не определен здесь! Как я могу сделать http-вызов внутри этой функции? Я знаю, что это связано с тем, что этот объект работает вне функции provider.getSomething. Хотя я не знаю, как это передать. Скажем, я это делаю:передавая объект в функцию внутри функции - область выпуска

this.providerobject.getSomething(this.http, function(err, result) { 

Ну, это передаст его функции моего провайдера, но не эта функция. Как я могу использовать этот объект в этой области?

+1

Возможный дубликат [Как получить доступ к правильному \ 'этому \'/контексту внутри обратного вызова?] (Http://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-context -indide-a-callback) –

+0

Я не работаю с Angular 2, но в большинстве случаев это [Function.bind()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind) работает хорошо. – Jhecht

ответ

2

есть два подхода,

вы можете хранить это в некоторой переменной сказать, себя и использовать его,

let self = this; 

или вы можете использовать жир синтаксис стрелка, который заботится о this

let myFunction =()=>{ 
    // this will be preserved here, 
    this.providerobject.getSomething(this.http, function(err, result) 
} 

Надеюсь, что это поможет!

+0

Спасибо за ответ! – user2924127