13

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

我试过了 :

window.location.reload();

location.reload();

但它重建了应用程序..有没有办法只刷新那个页面(特定的屏幕)。

也试过:

<ion-input *ngIf="no_internet === 1" (click)="refresh($event)"></ion-input>

在打字稿中:

refresh(refresher) {
    console.log('Begin async operation', refresher);

    setTimeout(() => {
        console.log('Async operation has ended');
        refresher.complete();
    }, 2000);
}
4

8 回答 8

19

试试这个代码:

this.navCtrl.setRoot(this.navCtrl.getActive().component);
于 2017-05-02T11:31:01.850 回答
3

您还可以使用离子刷新器,在页面上创建拉动刷新操作

http://ionicframework.com/docs/v2/api/components/refresher/Refresher/

于 2016-12-29T06:12:19.503 回答
2

我会这样做:(基于@Ahmad Aghazadeh 的回答)

this.navCtrl.push(this.navCtrl.getActive().component).then(() => {
   let index = this.viewCtrl.index;
   this.navCtrl.remove(index);
})

=> 再次推送此页面(再次加载)

=> 删除我们所在的页面(使用索引)

于 2017-11-08T08:17:32.877 回答
1

在 ionic 3 的异步函数中使用 ion-refresher 的示例:

在您的 .html 文件中:

<ion-content no-padding >
<ion-refresher (ionRefresh)="doRefresh($event)">
    <ion-refresher-content></ion-refresher-content>
  </ion-refresher>

并在您的 .ts 文件中:

    constructor(...) {
     ...
    samplefuncion(null){
       asyncFunction().then(()=>{
    ...//after success call
    ...
    if (event)    
    event.complete();

    },(error)=>{
    ....
    if (event)
    event.complete();
    })
    }

         doRefresh(event) {
            samplefuncion(event);        
          }
于 2018-09-12T14:22:19.400 回答
0

试试这个,只需弹出一个页面,然后再次推送该页面。

this.navCtrl.pop(); 
this.navCtrl.push(NewPage);

希望这会有所帮助。

于 2018-09-23T11:41:26.557 回答
0

html:

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

}

来源:离子文档

于 2018-05-16T13:24:05.333 回答
0

如果你愿意遵循一个共同的约定,我发现了一种非常简单的方法来重新加载当前视图(包括它的所有参数)。我使用 Ionic3 对此进行了测试,但它仍应适用于 Ionic 2

将每个页面的所有初始化代码移动到ionViewDidLoad(),在第一次加载视图时运行一次

import { Component } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';
import { Api } from '../../providers/api';
import { Movie } from '../../interfaces/movie';

@Component({
    selector: 'page-movie-info',
    templateUrl: 'movie-info.html'
})
export class MovieInfoPage {

    constructor(
        public navCtrl: NavController,
        public navParams: NavParams,
        public api: Api
    ) {
    }

    /**
     * Run all page initialization in this method so that this page
     * can be refreshed simply by re-calling this function
     */
    ionViewDidLoad() {
        //access any parameters provided to the page through navParams. 
        var movieId = this.navParams.data.movieId;
        this.api.movies.getById(movieId).then((movie) => {
            this.movie = movie;
        });
    }
    public movie: Movie;
}

从应用程序的其他任何地方,您可以使用此代码重新加载当前视图

//get the currently active page component
var component = this.navController.getActive().instance;
//re-run the view load function if the page has one declared
if (component.ionViewDidLoad) {
    component.ionViewDidLoad();
}
于 2017-09-23T02:13:39.783 回答
-2

尝试这个:$window.location.reload(); $route.reload() use to reload route.

如果您正在使用$stateProvider : $state.go($state.current, {}, {reload: true})

或者

var currentPageTemplate = $route.current.templateUrl;
$templateCache.remove(currentPageTemplate);
$route.reload();
于 2016-12-29T06:05:27.510 回答