Javascript 在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

有没有办法只刷新一个页面,即ionic2中只有一个屏幕

我试过:

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);