Ионный освежитель запускается автоматически при загрузке страницы?

#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, поскольку он загружает данные только при первом запуске приложения