0

我正在努力解决一个错误。我花了 2 多天时间,仍然没有解决方案……我使用 Ionic2 作为前端,使用 Horizo​​n 和 RethinkDB 作为后端。我有一张名为“消息”的表格,里面有几条消息。我只想获取所有这些消息并将它们显示在我的主页上。这是我的代码:

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的许多组合,但仍然没有运气。我做错了什么......希望你们帮助我!

4

1 回答 1

2

这个问题的答案只是确保引用你认为你正在引用的变量。

this.test 未定义而不是let test = [];您应该将其更改为this.test = [];.

或者您可以更改this.test.push(...test.push(...,它也应该可以正常工作。

this在 Javascript 中使用和处理范围时要谨慎是该语言中最棘手的部分之一。我希望在错误中有一些指示符,说明链中的哪个部分实际上undefined是您认为.push在对象undefined上未定义的this.test实际位置。testthis

于 2016-08-15T22:00:53.753 回答