Javascript http json数据打印到控制台,但不打印到爱奥尼亚3中的页面
我知道这可能是一个简单的解决方案。我正在构建一个Ionic 3应用程序,能够连接到json数据文件并将对象打印到控制台,但我无法将Javascript http json数据打印到控制台,但不打印到爱奥尼亚3中的页面,javascript,json,angular,ionic-framework,ionic3,Javascript,Json,Angular,Ionic Framework,Ionic3,我知道这可能是一个简单的解决方案。我正在构建一个Ionic 3应用程序,能够连接到json数据文件并将对象打印到控制台,但我无法将项传递到我的搜索功能。我在页面上看到的错误是运行时错误-无法读取未定义的属性“filter”-我猜是因为该项不可用 data.ts import { Injectable } from "@angular/core"; import { Http } from "@angular/http"; import "rxjs/add/operator/map"; @Inj
项
传递到我的搜索功能。我在页面上看到的错误是运行时错误-无法读取未定义的属性“filter”
-我猜是因为该项不可用
data.ts
import { Injectable } from "@angular/core";
import { Http } from "@angular/http";
import "rxjs/add/operator/map";
@Injectable()
export class Data {
items: any;
constructor(public http: Http) {
this.http
.get("./assets/data/plaques.json")
.map(res => res.json())
.subscribe(data => {
this.items = data;
console.log(data);
});
}
filterItems(searchTerm) {
return this.items.filter(item => {
return (
item.veteran_first.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1
);
});
}
}
您正在尝试在初始化之前访问此.items http.get是一个异步函数,当您访问
filterItems
时,可能无法设置此项
我强烈推荐阅读这本书,它将有助于更好地理解javascript的异步本质。请您用
zone()
这样包装它:
this.zone.run(() => {
this.items = data;
});
这也可能有帮助: