我在为一个错误而挣扎。我已经两天没找到解决办法了.我使用Ionic2作为前端,Horizon使用RethinkDB作为后端。我有一个名为“messages”的表,其中很少有消息。我只想得到所有这些信息,并在我的HomePage上显示它们。这是我的代码:
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,但仍然没有运气。我做错了什么..。希望你们能帮我!
发布于 2016-08-15 22:00:53
这个问题的答案就是确保引用您认为正在引用的变量。
this.test是未定义的。而不是let test = [];,您应该将其更改为this.test = [];。
或者您可以将this.test.push(...更改为test.push(...,它也应该可以正常工作。
在Javascript中使用this和篡改范围时要谨慎,这是语言中最棘手的部分之一。我希望在这个错误中有一些指示,说明链中的哪个部分实际上是undefined,就像您认为.push是this.test上的undefined,而实际上是在this对象上未定义的test。
https://stackoverflow.com/questions/38962049
复制相似问题