首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >地平线/RethinkDB/Ionic2无法读取未定义的属性"push“

地平线/RethinkDB/Ionic2无法读取未定义的属性"push“
EN

Stack Overflow用户
提问于 2016-08-15 19:51:35
回答 1查看 198关注 0票数 0

我在为一个错误而挣扎。我已经两天没找到解决办法了.我使用Ionic2作为前端,Horizon使用RethinkDB作为后端。我有一个名为“messages”的表,其中很少有消息。我只想得到所有这些信息,并在我的HomePage上显示它们。这是我的代码:

代码语言:javascript
复制
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,但仍然没有运气。我做错了什么..。希望你们能帮我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-15 22:00:53

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

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

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

在Javascript中使用this和篡改范围时要谨慎,这是语言中最棘手的部分之一。我希望在这个错误中有一些指示,说明链中的哪个部分实际上是undefined,就像您认为.pushthis.test上的undefined,而实际上是在this对象上未定义的test

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38962049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档