我已经制作了一个JSON请求,因此我可以将对象置于Angular2中。但我想只显示前15个元素,然后如果它工作在InfiniteScroll上重复相同的过程。所以这是我的代码之一。
setList(informes) {
if (informes) {
for (let id of Object.keys(informes)){
this.count = 0;
for (let i = 0; i < 15; i++) {
let node = informes[id];
this.informes.push(node[this.count]);
console.log (id);
this.count++;
}
}
}
}
显然它不起作用,它不断给我所有元素,如每个15次。我知道,但另一方面,如果我反其道而行之。
setList(informes) {
if (informes) {
for (let i = 0; i < 15; i++) {
for (let id of Object.keys(informes)){
let node = informes[id];
this.informes.push(node[this.count]);
console.log (id);
}
this.count++
}
}
}
它计算总节点数。
我想要的只是显示前15个元素。然后在我的其他函数infiniteScroll中重复代码(我将自己做,它可以工作)。
任何建议都将受到赞赏。
更新:
这是构造函数:
constructor(public navCtrl: NavController, public navParams: NavParams, public nav: NavController, public http: Http, public sanitizer: DomSanitizer) {
this.dataUrl = 'https://myurl.com/ionic/'; //example
if (this.dataUrl) {
this.http.get(this.dataUrl)
.map(res => res.json())
.subscribe(informes => this.setList(informes));
}
}
更新2:
代码效果很好。 我不得不修改一些东西才能使它工作。我会更新脚本,以便它可以帮助某人。
setList(informes) {
if (informes) {
let ids = Object.keys(informes);
ids.forEach((id, index) => {
if(index < 15){
let node = informes[id];
this.informes.push(node);
this.count++;
console.log(this.count);
}
});
}
}
goToNodeInformes(node){
this.navCtrl.push(NodeInformesPage, {'node':node.nid});
}
doInfinite(infiniteScroll, informes) {
informes = this.informes;
setTimeout(() => {
let ids = Object.keys(informes);
ids.forEach((id, index) => {
if(index < 15){
let node = informes[id];
this.informes.push(node);
this.count++;
console.log(this.count);
}
});
infiniteScroll.complete();
}, 500);
}
}
我将想象我不必重复相同的节点(将更新)但计数器有效!
答案 0 :(得分:1)
我认为你正在寻找这样的东西:
let keys = Object.keys(informes);
keys.foreach((key, index) => {
if(index < 15){
let node = informes[key];
this.informes.push(node);
console.log(informes[key]);
}
});