【发布时间】:2019-12-10 18:41:02
【问题描述】:
我正在使用 ionic 4 并尝试使用无限滚动来避免联系人列表显示缓慢。 但不知道如何正确使用这个设施。请帮忙。 有没有其他方法可以在我的应用中快速加载联系人列表。 显示时间过长。请提出一些宝贵的建议。我为此苦苦挣扎了 2 或 3 天。
在我的 .ts 文件中
contactList: any[] = [];
constructor(public navCtrl: NavController,private router: Router,
private contacts: Contacts , private sanitizer: DomSanitizer,) {
this.fetchDeviceContact();
}
fetchDeviceContact(){
this.contacts.find(["displayName", "phoneNumbers","photos"], {multiple: true}).then((contacts) => {
for (var i = 0; i < contacts.length; i++) {
if (contacts[i].displayName !== null) {
var name = contacts[i].displayName;
var number = contacts[i].phoneNumbers[0].value;
if(contacts[i].photos !== null){
var photo = this.sanitizer.bypassSecurityTrustUrl(contacts[i].photos[0].value);
}else{
photo = '';
}
var contactData={
"displayName":name,
"phoneNumbers":number,
"logo":photo,
}
this.contactList.push(contactData);
this.contactList.sort(function(a, b) {
return compareStrings(a.displayName, b.displayName);
});
}
}
});
function compareStrings(a, b) {
var nameA = a.toUpperCase();
var nameB = b.toUpperCase();
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
return 0;
}
loadData(event) {
setTimeout(() => {
console.log('Done');
event.target.complete();
if (data.length == 1000) {
event.target.disabled = true;
}
}, 500);
}
toggleInfiniteScroll() {
this.infiniteScroll.disabled = !this.infiniteScroll.disabled;
}
}
在 .html 文件中
<ion-content padding >
<ion-content padding >
<ion-searchbar ></ion-searchbar>
<ion-list *ngFor="let contact of contactList; let i = index;" > <!-- {{contact | json}} -->
<ion-item >
<ion-grid>
<ion-row>
<ion-col>
<div>
<ion-img [src]="contact.logo"></ion-img><img [src]="contact.logo">
<ion-icon ios="ios-person" md="md-person"></ion-icon> <b> {{contact.displayName}}</b>
</div>
</ion-col>
</ion-row>
<ion-row>
<ion-col size="10">
<div>
<ion-icon item-start ios="ios-call" md="md-call" ></ion-icon> {{ contact.phoneNumbers}}
</div>
</ion-col>
</ion-row>
</ion-grid>
</ion-item>
</ion-list>
<ion-infinite-scroll threshold="100px" (ionInfinite)="loadData($event)">
<ion-infinite-scroll-content
loadingSpinner="bubbles"
loadingText="Loading more data...">
</ion-infinite-scroll-content>
</ion-infinite-scroll>
</ion-content>
【问题讨论】:
-
无限滚动不负责联系人列表显示缓慢。并且加载缓慢可能是由于离子原生插件和联系人的长度。
-
我想使用无限滚动来避免加载缓慢。但不知道如何使用它
-
获取联系人后会无限滚动。您必须减少获取时间以实现快速加载。
-
你能推荐一些代码
-
@AjayKrishnaDutta,
event.target.complete();之后你需要加载下一个数据并添加到联系人列表中
标签: angular ionic-framework ionic3 ionic4 ionic-native