如何在 ionic 2 中刷新页面或刷新 ngOnInit()
How to refresh a page or refresh ngOnInit() in ionic 2
我想知道是否有办法刷新 ngOnInit() 函数或刷新组件。我不想使用下拉刷新方法。我想在单击或点击按钮时执行此操作。谢谢
home.ts 文件
checkNetwork() {
console.log("check internet");
this.platform.ready().then(() => {
if(this.network.type == "none"){
this.shouldHide = false;
this.dividerHide = true;
}
let alert = this.alertCtrl.create({
title: "Connection Status",
subTitle: <string> this.network.type,
buttons: ["OK"]
});
alert.present();
});
}
home.html 文件
<ion-card [hidden]="shouldHide">
<ion-card-header>
<img src="img/sad.png" />
</ion-card-header>
<ion-card-content>
<ion-card-title style="text-align:center">
No INTERNET!
</ion-card-title>
<button ion-button full (click)="refreshPage($event)">Retry</button>
</ion-card-content>
当连接可用时,我希望页面刷新
您可能需要使用 init 方法或 Rx 的订阅重构您的代码结构,使其不需要页面刷新。
如果您需要重新加载页面,为什么不使用重新加载方法呢?
window.location.reload();
已编辑:
您在使用 network.onConnect 订阅吗?
// watch network for a connection
let connectSubscription = this.network.onConnect().subscribe(() => {
console.log('network connected!');
// We just got a connection but we need to wait briefly
// before we determine the connection type. Might need to wait
// prior to doing any api requests as well.
setTimeout(() => {
if (this.network.type === 'wifi') {
console.log('we got a wifi connection, woohoo!');
}
}, 3000);
});
谢谢大家,我就是这样做到的
home.ts 文件
ngOnInit(){
this.LoadData();}
checkNetwork() {
console.log("check internet");
this.platform.ready().then(() => {
if(this.network.type == "none"){
this.shouldHide = false;
this.dividerHide = true;
}else{
this.shouldHide = true;
this.dividerHide = false;
this.presentLoading()
}
});
}
refreshPage()
{this.LoadData();
}
public LoadData(){...}
Home.html 文件
<ion-card [hidden]="shouldHide">
<ion-card-header>
<img src="img/sad.png" />
</ion-card-header>
<ion-card-content>
<ion-card-title style="text-align:center">
Pas de connexion internet!
</ion-card-title>
<button ion-button full (click)="refreshPage()">Reessayer</button>
</ion-card-content>
使用此代码
refreshPage() {
this.navCtrl.setRoot(this.navCtrl.getActive().component);
}
您可以 re-initialise 调用 ngOnInit() 的页面:
this.ngOnInit();
我的解决方法是呈现祝酒词 (ToastController)。 Toast 显示,toast 消失,然后 angular 像预期的那样刷新数据。 Toast 可以说“正在刷新数据”或任何与您相关的内容——在我的例子中是“来自 blah@blah 的新消息”。或者,如果您不想弄乱 UI.
,也许只显示 1 毫秒的祝酒词
this.navCtrl.setRoot(this.navCtrl.getActive().component);
“有效”但会产生完全重置导航堆栈的副作用,这通常是完全不能接受的。
我想知道是否有办法刷新 ngOnInit() 函数或刷新组件。我不想使用下拉刷新方法。我想在单击或点击按钮时执行此操作。谢谢
home.ts 文件
checkNetwork() {
console.log("check internet");
this.platform.ready().then(() => {
if(this.network.type == "none"){
this.shouldHide = false;
this.dividerHide = true;
}
let alert = this.alertCtrl.create({
title: "Connection Status",
subTitle: <string> this.network.type,
buttons: ["OK"]
});
alert.present();
});
}
home.html 文件
<ion-card [hidden]="shouldHide">
<ion-card-header>
<img src="img/sad.png" />
</ion-card-header>
<ion-card-content>
<ion-card-title style="text-align:center">
No INTERNET!
</ion-card-title>
<button ion-button full (click)="refreshPage($event)">Retry</button>
</ion-card-content>
当连接可用时,我希望页面刷新
您可能需要使用 init 方法或 Rx 的订阅重构您的代码结构,使其不需要页面刷新。
如果您需要重新加载页面,为什么不使用重新加载方法呢?
window.location.reload();
已编辑:
您在使用 network.onConnect 订阅吗?
// watch network for a connection
let connectSubscription = this.network.onConnect().subscribe(() => {
console.log('network connected!');
// We just got a connection but we need to wait briefly
// before we determine the connection type. Might need to wait
// prior to doing any api requests as well.
setTimeout(() => {
if (this.network.type === 'wifi') {
console.log('we got a wifi connection, woohoo!');
}
}, 3000);
});
谢谢大家,我就是这样做到的
home.ts 文件
ngOnInit(){
this.LoadData();}
checkNetwork() {
console.log("check internet");
this.platform.ready().then(() => {
if(this.network.type == "none"){
this.shouldHide = false;
this.dividerHide = true;
}else{
this.shouldHide = true;
this.dividerHide = false;
this.presentLoading()
}
});
}
refreshPage()
{this.LoadData();
}
public LoadData(){...}
Home.html 文件
<ion-card [hidden]="shouldHide">
<ion-card-header>
<img src="img/sad.png" />
</ion-card-header>
<ion-card-content>
<ion-card-title style="text-align:center">
Pas de connexion internet!
</ion-card-title>
<button ion-button full (click)="refreshPage()">Reessayer</button>
</ion-card-content>
使用此代码
refreshPage() {
this.navCtrl.setRoot(this.navCtrl.getActive().component);
}
您可以 re-initialise 调用 ngOnInit() 的页面: this.ngOnInit();
我的解决方法是呈现祝酒词 (ToastController)。 Toast 显示,toast 消失,然后 angular 像预期的那样刷新数据。 Toast 可以说“正在刷新数据”或任何与您相关的内容——在我的例子中是“来自 blah@blah 的新消息”。或者,如果您不想弄乱 UI.
,也许只显示 1 毫秒的祝酒词this.navCtrl.setRoot(this.navCtrl.getActive().component);
“有效”但会产生完全重置导航堆栈的副作用,这通常是完全不能接受的。