有没有办法只刷新一个页面,即在ionic2中只有一个屏幕。
我试过了:
window.location.reload();
和
location.reload();
但是它重建了应用..有没有办法只刷新那个页面(特定的屏幕)。
也尝试过:
<ion-input *ngIf="no_internet === 1" (click)="refresh($event)"></ion-input>
TypeScript中的:
refresh(refresher) {
console.log('Begin async operation', refresher);
setTimeout(() => {
console.log('Async operation has ended');
refresher.complete();
}, 2000);
}
答案 0 :(得分:18)
试试这段代码:
price=re.sub("<[b][^>]*>(.+?)</[b]>", '', price)
答案 1 :(得分:3)
您还可以使用离子刷新器在页面上创建拉动以刷新动作
http://ionicframework.com/docs/v2/api/components/refresher/Refresher/
答案 2 :(得分:2)
我会这样做:(基于@Ahmad Aghazadeh回答)
this.navCtrl.push(this.navCtrl.getActive().component).then(() => {
let index = this.viewCtrl.index;
this.navCtrl.remove(index);
})
=&GT;再次推送此页面(再次加载)
=&GT;删除我们所在的页面(使用索引)
答案 3 :(得分:1)
在离子3中的异步功能中使用离子刷新器的示例:
在您的.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);
}
答案 4 :(得分:0)
如果您愿意遵循一个共同的约定,我找到了一种非常简单的方法来重新加载当前视图(包括其所有参数)。我使用Ionic3进行了测试,但它仍然适用于Ionic 2
将每个页面的所有初始化代码移动到ionViewDidLoad()
,在第一次加载视图时运行ONCE
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();
}
答案 5 :(得分:0)
HTML:
<ion-refresher (ionRefresh)="doRefresh($event)">
<ion-refresher-content></ion-refresher-content>
</ion-refresher>
</ion-content>
TypeScript:
@Component({...})
export class NewsFeedPage {
doRefresh(refresher) {
console.log('Begin async operation', refresher);
setTimeout(() => {
console.log('Async operation has ended');
refresher.complete();
}, 2000);
}
}
来源:Ionic doc
答案 6 :(得分:0)
尝试此操作,仅弹出一个页面,然后再次推送该页面。
this.navCtrl.pop();
this.navCtrl.push(NewPage);
希望这会有所帮助。
答案 7 :(得分:-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();