2016-12-29 3 views
10

Есть ли способ обновить только страницу, то есть только один экран в ionic2.Обновить страницу в 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); 
} 
+0

вы можете объяснить, что именно вы пытаетесь обновить на странице? при использовании ионных есть другие способы загрузки содержимого, обновление страницы не рекомендуется –

ответ

14

Попробуйте этот код:

this.navCtrl.setRoot(this.navCtrl.getActive().component); 
+2

удаляет все предыдущие навигационные файлы. – Yawar

+2

это не решение, как сказал @Yawar, вы удаляете все предыдущие навигационные системы, –

-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(); 
+0

Будет ли это работать в Ionic2 ?? –

2

Вы можете также использовать ионный освежитель, чтобы создать напряжение, чтобы обновить действие на странице

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

+1

На самом деле я хочу сделать это нажатием кнопки в моей форме. –

+0

затем создайте (нажмите) = "refresh()" действие на кнопку и создайте метод обновления в файле ts – catu

+0

Я прошу вас чтобы посмотреть мой обновленный вопрос, можете ли вы предложить, где я ошибаюсь. –

0

Если вы согласны следовать общему соглашению, я нашел очень простой способ для перезагрузки текущего представления (включая все его параметры). Я проверил это с помощью Ionic3, но должна применяться в ионическом 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(); 
} 
0

Я бы сделать это: (на основе @Ahmad Агазаде ответа)

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

=> Нажмите эту страницу еще раз (загрузив ее снова)

=> Удалить страницу мы были на (с использованием индекса)

Смежные вопросы