2016-08-15 47 views
0

我正在努力解決一個錯誤。它花了我2天,仍然沒有解決方案... 我使用Ionic2作爲前端,Horizo​​n使用RethinkDB作爲後端。我有一張名爲「消息」的表格,裏面有很少的消息。我只想獲得所有這些信息並在我的主頁上顯示。 這裏是我的代碼:Horizo​​n/RethinkDB/Ionic2無法讀取未定義的屬性「push」

import {Component} from '@angular/core'; 
import {NavController} from 'ionic-angular'; 

declare var Horizon; 


@Component({ 
    templateUrl: 'build/pages/home/home.html' 
}) 
export class HomePage { 
    test: any[]; 

    constructor(public navCtrl: NavController) { 




    } 

    getMessages(){ 
    let test = []; 
    let hz = new Horizon({host: 'localhost:3100'}); 
    hz.connect(); 
    let messages = hz('messages'); 
    messages.watch().subscribe(messages => { 
     for(let i = 0; i<messages.length; i++){ 
       console.log(messages[i].text); 
       console.log(messages[i].id); 
      this.test.push([{ 
       text: messages[i].text, 
       id: messages[i].id 
      }]) 
     } 
    }); 
    } 

} 

我試着用的this.test.push多種組合,但仍然沒有運氣。我做錯了什麼......希望你們幫助我!

+0

發生這種情況是因爲'this.test'未定義。如果你只是使用'test.push(...'或將'let test = [];'改爲'this.test = [];' – dalanmiller

+1

該死的......現在一切正常,謝謝!不知道爲什麼我沒有那樣做。 – Patrick1870

回答

2

這個問題的答案只是確保引用你認爲你引用的變量。

this.test未定義。您應該將其更改爲this.test = [];,而不是let test = [];

或者您可以將this.test.push(...更改爲test.push(...,它也應該可以正常工作。

使用this時保持謹慎,Javascript中的雜耍範圍是該語言中最棘手的部分之一。我希望在錯誤中存在一些指示符,指示鏈中的哪個部分實際上是undefined,因爲您認爲.pushundefined,因爲this.test實際上它是test,它在this對象上未定義。

相關問題