在Ionic2 + Angular2 + Meteor移动应用程序中,联系人列出了无限滚动选项。在滚动期间,联系人应该在20的批次中附加。
import {Observable} from "rxjs";
contacts: Observable<Contact[]>;
/* code to pull Contacts from collection */
findContacts() :Observable<Contact[]> {
return Contacts.find({accessGroup: {$in: this.sourcingUser.accessGroup}
}, {sort: {firstName: 1}} )
.mergeMap<Contact[]>(contacts =>
Observable.combineLatest(
...contacts.map(contact =>
Suppliers.find({supplierId: contact.supplierId})
.startWith(null)
.map(suppliers => {
if(suppliers){
contact.supplier = suppliers[0];
}
return contact;
})
))).zone();
}
// Code to append contacts
this.contactsSub = MeteorObservable.subscribe('contacts', options).subscribe(() => {
MeteorObservable.autorun().subscribe(() => {
if(!this.contacts){
this.contacts = this.findContacts();
} else {
this.contacts = this.contacts.merge(this.findContacts());
}
});
});
当显示前20个联系人和接下来的20个联系人时,此代码可以正常工作。但在那之后,evertime,它保持前20个联系人和新接触的联系人被findContacts()方法的新20个联系人替换。
所以它总是只显示40个联系人。无论如何要继续追加/合并联系人到现有的联系人列表?非常感谢任何帮助。
谢谢, Annadurai。
答案 0 :(得分:0)
问题的根本原因是由于在我的情况下执行mergeMap时的性能问题。我已删除mergeMap并以不同方式处理业务需求以解决此报告的问题。