作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
当我拔下我的 dsl 电缆并重新插入时,我的 ionic 清新器无法正常工作,我不知道为什么。
我想在互联网离线时停止它,当互联网打开时用户可以这样做。
代码如下:
doRefresh(refresher) {
if (this.isOnline) {
this.refreshData();
this.getAssignedWarrents()
.then(() => {
console.log('Refresher completed.');
refresher.complete();
});
}else {
refresher.complete();
}
}
最佳答案
一个快速而肮脏的解决方案是直接使用 navigator.onLine
属性而不是 isOnline
属性:
doRefresh(refresher) {
if (navigator.onLine) {
this.refreshData();
this.getAssignedWarrents().then(
() => {
console.log('Refresher completed.');
refresher.complete();
}
);
} else {
refresher.complete();
}
}
您当前的代码不起作用,因为您从未更新 isOnline
属性。因此复习者永远不会“知道”互联网连接是离线还是在线。
但是,更好的方法是在您的 View 中直接禁用 ionic 刷新器。
如何实现它的示例。
<ion-refresher
[disabled]="hasNoInternetConnection()"
(ionRefresh)="doRefresh($event)">
</ion-refresher>
接下来在你的 Controller 中:
hasNoInternetConnection(): boolean {
return !navigator.onLine;
}
doRefresh(refresher) {
// Your usual refresh. Note how we do not need to check if we are online here.
this.refreshData();
this.getAssignedWarrents().then(
() => {
console.log('Refresher completed.');
refresher.complete();
}
);
}
这种方法更好,因为我们让 Ionic 处理禁用刷新器而不是我们自己检查它。
如果 navigator.onLine
不能为您可靠地工作,您还可以使用 Network Ionic 团队提供的插件。
关于angular - 当用户离线并返回在线时,如何使我的 ionic 清新器正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56442918/
我是一名优秀的程序员,十分优秀!