Horizon/RethinkDB/Ionic2 无法读取未定义的 属性 "push"
Horizon/RethinkDB/Ionic2 cannot read property "push" of undefined
我遇到一个错误。我花了2天多的时间仍然没有解决方案...
我使用 Ionic2 作为前端,使用 Horizon 和 RethinkDB 作为后端。我有一个名为 'messages' 的 table,里面只有几条消息。我只想获取所有这些消息并将它们显示在我的主页上。
这是我的代码:
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 的多种组合,但仍然没有成功。我做错了什么......希望你们能帮助我!
这个问题的答案只是确保引用您认为正在引用的变量。
this.test
未定义。您应该将 let test = [];
改为 this.test = [];
,而不是 let test = [];
。
或者您可以将 this.test.push(...
更改为 test.push(...
,它应该也可以正常工作。
在使用 this
时要小心并在 Javascript 中处理作用域是该语言中最棘手的部分之一。我希望错误中有一些指示器表明链中的哪一部分实际上是 undefined
正如你认为 .push
在 this.test
上是 undefined
实际上它是 test
在 this
对象上未定义。
我遇到一个错误。我花了2天多的时间仍然没有解决方案... 我使用 Ionic2 作为前端,使用 Horizon 和 RethinkDB 作为后端。我有一个名为 'messages' 的 table,里面只有几条消息。我只想获取所有这些消息并将它们显示在我的主页上。 这是我的代码:
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 的多种组合,但仍然没有成功。我做错了什么......希望你们能帮助我!
这个问题的答案只是确保引用您认为正在引用的变量。
this.test
未定义。您应该将 let test = [];
改为 this.test = [];
,而不是 let test = [];
。
或者您可以将 this.test.push(...
更改为 test.push(...
,它应该也可以正常工作。
在使用 this
时要小心并在 Javascript 中处理作用域是该语言中最棘手的部分之一。我希望错误中有一些指示器表明链中的哪一部分实际上是 undefined
正如你认为 .push
在 this.test
上是 undefined
实际上它是 test
在 this
对象上未定义。