Javascript 在ionic2中刷新页面
有没有办法只刷新一个页面,即ionic2中只有一个屏幕 我试过:Javascript 在ionic2中刷新页面,javascript,html,angular,ionic2,refresher,Javascript,Html,Angular,Ionic2,Refresher,有没有办法只刷新一个页面,即ionic2中只有一个屏幕 我试过: window.location.reload(); 及 但它重建了应用程序。。是否有办法仅刷新该页面(特定屏幕) 还尝试: <ion-input *ngIf="no_internet === 1" (click)="refresh($event)"></ion-input> 试试这个:$window.location.reload()$route.reload()用于重新加载路由。 如果您使用的是$st
window.location.reload();
及
但它重建了应用程序。。是否有办法仅刷新该页面(特定屏幕)
还尝试:
<ion-input *ngIf="no_internet === 1" (click)="refresh($event)"></ion-input>
试试这个:
$window.location.reload()$route.reload()用于重新加载路由。
如果您使用的是$stateProvider:$state.go($state.current,{},{reload:true})
或
您还可以使用ionic refresh,在页面上创建一个pull to refresh操作 请尝试以下代码:
this.navCtrl.setRoot(this.navCtrl.getActive().component);
如果您愿意遵循一个通用约定,我已经找到了一种非常简单的方法来重新加载当前视图(包括其所有参数)。我使用Ionic3对此进行了测试,但它仍然适用于Ionic2 将每个页面的所有初始化代码移动到
ionViewDidLoad()
,该操作在首次加载视图时运行一次
从'@angular/core'导入{Component};
从“离子角度”导入{NavController,NavParams};
从“../../providers/Api”导入{Api};
从“../../interfaces/Movie”导入{Movie};
@组成部分({
选择器:“页面电影信息”,
templateUrl:'movie info.html'
})
导出类电影信息{
建造师(
公共navCtrl:NavController,
公共导航参数:导航参数,
公共api:api
) {
}
/**
*在此方法中运行所有页面初始化,以便此页面
*只需重新调用此函数即可刷新
*/
ionViewDidLoad(){
//通过navParams访问提供给页面的任何参数。
var movieId=this.navParams.data.movieId;
this.api.movies.getById(movieId).then((movie)=>{
这部电影=电影;
});
}
公共电影:电影;
}
从应用程序中的任何其他位置,您都可以使用此代码重新加载当前视图
//获取当前活动的页面组件
var component=this.navController.getActive().instance;
//如果页面已声明视图加载函数,请重新运行该函数
if(component.ionViewDidLoad){
ionViewDidLoad();
}
我会这么做:(基于@Ahmad Aghazadeh的回答)
=>再次推送此页面(再次加载)
=>删除我们所在的页面(使用索引)Html:来源:在ionic 3的异步函数中使用离子刷新器的示例: 在.html文件中:
<ion-content no-padding >
<ion-refresher (ionRefresh)="doRefresh($event)">
<ion-refresher-content></ion-refresher-content>
</ion-refresher>
试试这个,只需弹出一页,然后再推一次
this.navCtrl.pop();
this.navCtrl.push(NewPage);
希望这会有所帮助 然后在按钮上创建一个(单击)=“refresh()”操作,并在ts文件中创建一个refresh方法。我请求您查看我更新的问题,您能否建议我错在哪里。通常,您会在模板中的方法调用中传递$event,但是如果您在模板中较早地设置了'refresh'变量,我想应该有用。否则,请尝试在模板中传递$event。但是你真的需要传递什么吗。您是否可以调用ionViewWillEnter()方法,或者创建一个刷新页面上所需数据的方法?您的ion列表或您正在使用的任何东西都是从ts文件中的数组中获取其数据,对吗?然后,只需在刷新方法中更新该数组,列表就会更新。您能解释一下您要在页面中更新的内容吗?使用ionic时,如果有其他方式上载内容,则不建议刷新页面。编辑会删除所有以前的导航。这不是解决方案,正如@Yawar所说,您会删除所有以前的导航,删除所有导航。这不是一个解决方案尝试一下:只需弹出一页,然后再推那一页。希望这会有所帮助:)this.navCtrl.pop();this.navCtrl.push(NewPage);为了避免影响导航,我通过包装需要在函数中更新的组件(产品列表)来刷新视图,并在didLoad、add和delete操作时调用它。方法
ionViewWillEnter
可用于管理新加载视图的任何准备工作
this.navCtrl.setRoot(this.navCtrl.getActive().component);
this.navCtrl.push(this.navCtrl.getActive().component).then(() => {
let index = this.viewCtrl.index;
this.navCtrl.remove(index);
})
<ion-refresher (ionRefresh)="doRefresh($event)">
<ion-refresher-content></ion-refresher-content>
</ion-refresher>
</ion-content>
@Component({...})
export class NewsFeedPage {
doRefresh(refresher) {
console.log('Begin async operation', refresher);
setTimeout(() => {
console.log('Async operation has ended');
refresher.complete();
}, 2000);
}
}
<ion-content no-padding >
<ion-refresher (ionRefresh)="doRefresh($event)">
<ion-refresher-content></ion-refresher-content>
</ion-refresher>
constructor(...) {
...
samplefuncion(null){
asyncFunction().then(()=>{
...//after success call
...
if (event)
event.complete();
},(error)=>{
....
if (event)
event.complete();
})
}
doRefresh(event) {
samplefuncion(event);
}
this.navCtrl.pop();
this.navCtrl.push(NewPage);