#firebase #ionic-framework
#firebase #ionic-framework
Вопрос:
Похоже, что Ionic refresher обновляет страницу без ручного вызова doRefresh. Я бы хотел, чтобы обновление выполнялось только при выполнении действия «вытащить».
Похоже, что doRefresh автоматически выполняется в функции «ionviewdidload».
<ion-refresher (ionRefresh)="doRefresh($event);">
<ion-refresher-content
pullingText="Pull to refresh" pullingIcon="arrow-dropdown"
refreshingSpinner="circles"
refreshingText="..fetching">
</ion-refresher-content>
</ion-refresher>
home.ts
doRefresh(refresher) {
console.log('the current tab that is set = ' this.tabSelId);
console.log('testing');
this.user = JSON.parse(window.localStorage.getItem('user'));
let self_ = this;
let devicePos = null;
let devicelat = null;
let devicelong = null;
Geolocation.getCurrentPosition().then((position) => {
// self_.loadingData(devicePos);
devicelat = position.coords.latitude;
devicelong = position.coords.longitude;
self_.get_all_posts(devicelat, devicelong, self_.tabSelId);
refresher.complete();
}, (err) => {
console.log('failed to get lat and long :' err);
self_.get_all_posts(devicelat, devicelong, self_.tabSelId);
// self_.filter_posts_by_type(self_.tabSelId);
// loading.dismiss();
// refresher.complete();
});
}
в моей функции ionviewdidload (home.ts):
ionViewDidLoad(){
this.user = JSON.parse(window.localStorage.getItem('user'));
let self_ = this;
let devicePos = null;
console.log('the current tab that is set = ' this.tabSelId);
let devicelat = null;
let devicelong = null;
Geolocation.getCurrentPosition().then((position) => {
devicelat = position.coords.latitude;
devicelong = position.coords.longitude;
console.log('%c executing when position is got successfully ', 'background: #222; color: #bada55');
self_.get_all_posts(devicelat, devicelong, self_.tabSelId);
console.log('executing when position is got successfully');
}, (err) => {
console.log('failed to get lat and long :' err);
devicelat = 28.318237;
devicelong = 111.168137;
self_.get_all_posts(devicelat, devicelong, self_.tabSelId);
});
это поведение по умолчанию при использовании
«обновление ion»
Я бы хотел, чтобы обновление запускалось только при выполнении действия «вытащить». Не знаете, почему функция doRefresh () выполняется при загрузке приложения (только в первый раз)
Комментарии:
1. покажите ваш файл .ts…
Ответ №1:
В вашем Html используйте like..
<ion-refresher slot="fixed" (ionRefresh)="doRefresh($event)">
<ion-refresher-content pullingIcon="arrow-dropdown" pullingText="Pull to refresh" refreshingSpinner="circles"
refreshingText="Refreshing...">
</ion-refresher-content>
</ion-refresher>
В .ts используйте like…
doRefresh(event) {
this.userPost();
setTimeout(() => {
event.target.complete();
}, 2000);
}
Комментарии:
1. Слоты — это особенность веб-компонентов, которая используется для придания компонентам большей динамичности. Это позволяет предоставлять дополнительный контент / элементы при использовании компонента, которые затем могут отображаться внутри компонента.
2. В doRefresh (событие) { } вызовите вашу функцию, которую вы хотите обновить при выпадающем списке..
3. спасибо, но у меня все еще возникает проблема, у меня уже есть функция dorefresh. Часть с выводом и обновлением полностью работает нормально, это не моя проблема. проблема в том, что когда мое приложение загружается в первый раз, кажется, что функция Dorefresh вызывается автоматически..
4. используйте ionViewWillEnter () { } вместо ionViewDidLoad(){ }
5. я не хочу запрашивать и загружать данные при каждом нажатии на вкладку, поэтому я использую didload, поскольку он загружает данные только при первом запуске приложения