2015-10-05 110 views
0

我正在進行api調用並將屬性分配給結果。然後我試圖使用這個屬性來修改數據,但我得到一個未定義的錯誤:在屬性中存儲JSON響應值

這是我的課:

@Injectable() 
export class DisplayService { 
    screens: Array<any>; 

    constructor(public http: Http){ 

    } 

    getDisplays() { 
     var path = 'http://localhost:8000/getscreens'; 
     $.ajax({ 
      type: 'GET', 
      url: path, 
      success: function(data){ 
       this.screens = data.screens; 
      } 
     }); 
     console.log(this.screens); 
    } 
} 

data.screens工作正常;然而,當我console.logthis.screens我得到undefined。我如何儲存迴應供以後使用?

+0

我可以問你爲什麼使用jQuery你的電話?你爲什麼不使用'Http'(甚至在你的服務構造函數中)? –

+0

@EricMartinez我是我只是改變它使問題更容易理解,因爲我不知道有多少人熟悉'Http' – ThreeAccents

回答

0

看起來就像範圍問題...嘗試:

@Injectable() 
export class DisplayService { 
    screens: Array<any>; 

    constructor(public http: Http){ 

    } 

    getDisplays() { 
     var path = 'http://localhost:8000/getscreens'; 
     var that = this; 
     $.ajax({ 
      type: 'GET', 
      url: path, 
      success: function(data){ 
       that.screens = data.screens; 
      } 
     }); 
     console.log(this.screens); 
    } 
} 
+0

我也認爲這是問題,但可悲的是它不 – ThreeAccents

+0

lol duh ... ajax是那麼,異步... console.log將在成功之前運行...完全錯過 –

+0

是的!謝謝大聲笑 – ThreeAccents