2016-08-15 4 views
0

私はエラーで苦労しています。それは2日以上私にかかった解決策はまだありません... 私はバックエンドとしてRethinkDBとフロントエンドとホライゾンとしてIonic2を使用しています。私は「メッセージ」と呼ばれるテーブルを持っていて、メッセージはほとんどありません。私はこれらのメッセージをすべて取得して、私のホームページに表示したいだけです。Horizo​​n/RethinkDB/Ionic2が未定義のプロパティ "プッシュ"を読み取ることができません

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です。 let test = [];の代わりにthis.test = [];に変更する必要があります。

this.test.push(...test.push(...に変更することもできます。また、正常に動作するはずです。

thisを使用してJavascriptでジャグリングスコープを使用する場合は、この言語の最も難しい部分の1つです。実際にtestthisオブジェクトで定義されていなかったところで、undefinedと思われるように、チェーン内のどの部分が実際にエラーであるかどうかの指標があることを願っています。.pushundefinedです。this.test

関連する問題