当我拔出dsl电缆并再次插入时,我的离子清洁器无法正常工作,为什么?
我想在Internet脱机时停止它,而在Internet开启时用户可以这样做。
这是代码:
doRefresh(refresher) {
if (this.isOnline) {
this.refreshData();
this.getAssignedWarrents()
.then(() => {
console.log('Refresher completed.');
refresher.complete();
});
}else {
refresher.complete();
}
}
答案 0 :(得分:0)
一种快速而肮脏的解决方案是直接使用navigator.onLine
属性而不是isOnline
属性:
doRefresh(refresher) {
if (navigator.onLine) {
this.refreshData();
this.getAssignedWarrents().then(
() => {
console.log('Refresher completed.');
refresher.complete();
}
);
} else {
refresher.complete();
}
}
您当前的代码无效,因为您从不更新isOnline
属性。因此,复习人员永远不会“知道”互联网连接脱机或联机。
但是,更好的方法是直接禁用视图中的离子刷新器。
如何实现此目的的示例。
<ion-refresher
[disabled]="hasNoInternetConnection()"
(ionRefresh)="doRefresh($event)">
</ion-refresher>
控制器中的下一个:
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
对您而言无法正常工作,您还可以使用Ionic小组提供的Network插件。
答案 1 :(得分:0)
如果我们谈论离子环境,也许最好的方法是像这样为Network注册处理程序:
constructor(private network: Network) {}
...
if (this.platform.is('cordova')) {
this.network.onDisconnect().subscribe(
async () => {
await this.appOffline();
},
error => this.log.error('network.onDisconnect subscribe error: %j', error)
);
this.network.onConnect().subscribe(
async () => {
await this.appOnline();
},
error => this.log.error('network.onConnect subscribe error: %j', error)
);
...