Quantcast
Channel: Ionic Forum - Latest topics
Viewing all articles
Browse latest Browse all 70747

Event this.slides.slideTo(index); executed by typescript

$
0
0

@cristsaavedra wrote:

hi everyone,

902/5000

I am working with slides and segments, these elements each have an event for when the segments are changed, I explain. When I change a segment through the segment element I have the event (ionChange) which I change by code the slide that I find in order to have a good navigability. In turn, in the Slide element I also have the event (ionSlideWillChange) to change the slide when I change pages and change the focus of the category.
I have the problem when I change the segment manually to change the slide and I execute by typescript this.slides.slideTo (index); to change the view slide, but this event causes the event to be activated in parallel (ionSlideWillChange) thus executing double code that I do not require.
Is there any way to make this more functional or to cancel that second event?
Then place the code in question:

    <ion-header>
  <ion-toolbar class="ionToolbarPrincipal">
    <ion-buttons slot="start">
      <ion-menu-button></ion-menu-button>
    </ion-buttons>
    <ion-title>Noticias Generales</ion-title>
  </ion-toolbar>
  
  <ion-toolbar class="ionToolbarSegment">
    <ion-segment scrollable [(ngModel)]="categories">
      <ion-segment-button *ngFor="let category of listaCategorias; let idx=index;" (click)="CambiarCategoria(idx)" value="{{ category.id }}" >
        <ion-label class="labelTextCategoria" id="{{ category.id }}"><b>{{ category.nombre }}</b></ion-label>
      </ion-segment-button>
    </ion-segment>
  </ion-toolbar>
</ion-header>



    <ion-content [scrollEvents]="true">

    <ion-refresher slot="fixed" (ionRefresh)="ActualizarNoticias($event)">
      <ion-refresher-content
        pullingIcon="arrow-dropdown"
        pullingText="Actualizando Noticias"
        refreshingSpinner="circles"
        refreshingText="Actualizando...">
      </ion-refresher-content>
    </ion-refresher>

    <ion-slides #slider [options]="sliderConfig" (ionSlideWillChange)="CambiarSlide()" (ionSlideTouchStart)="ValidarSlice()">
      
      <ion-slide> 
        <ion-grid>
          <ion-row>
            <ion-col>
              <ion-card class="cardsRow" color="light" *ngFor="let card of cardCat0; let idx=index;">
                <ion-card-header>
                  <ion-card-title text-center class="textoTitulo">{{ card.titulo }}</ion-card-title>
                </ion-card-header>
                <ion-card-content class="cardContent"> 
                  <div *ngIf="card.imagen != ''">
                    <ion-img src="{{ card.imagen }}" (click)="ObtenerDatosCards(card.id)"></ion-img>
                    {{ card.detalle }}
                  </div>
                
                  <div *ngIf="card.imagen == ''">
                      <ion-label (click)="ObtenerDatosCards(card.id)">{{ card.detalle }}</ion-label>
                  </div>
                  <ion-row>
                    <ion-col col-3 no-padding>
                      <ion-button no-margin text-center fill="clear" style="pointer-events: none;">
                        <ion-icon [name]="card.favorita"></ion-icon> 
                      </ion-button>
                    </ion-col>
                    <ion-col col-3 no-padding>
                      <ion-button no-margin text-center fill="clear" style="pointer-events: none;">
                        <ion-icon [name]="card.alarma"></ion-icon>
                      </ion-button>
                    </ion-col>
                    <ion-col col-3 no-padding>
                      <ion-button no-margin text-center fill="clear" style="pointer-events: none;">
                        <ion-icon [name]="card.guardada"></ion-icon>
                      </ion-button>
                    </ion-col>
                    <ion-col col-3 no-padding>
                      <ion-button no-margin float-right fill="clear" (click)="CargarBotonesOpciones(card)">
                        <ion-icon name="reorder"></ion-icon>
                      </ion-button>
                    </ion-col>
                  </ion-row>
                </ion-card-content>
              </ion-card>
              
            </ion-col>
          </ion-row>
        </ion-grid>
      </ion-slide>

      
      <ion-slide>
        <ion-grid>
          <ion-row>
            <ion-col>
              <ion-card class="cardsRow" color="light" *ngFor="let card of cardCat1; let idx=index;">
                <ion-card-header>
                  <ion-card-title text-center class="textoTitulo">{{ card.titulo }}</ion-card-title>
                </ion-card-header>
                <ion-card-content class="cardContent"> 
                  <div *ngIf="card.imagen != ''">
                    <ion-img src="{{ card.imagen }}" (click)="ObtenerDatosCards(card.id)"></ion-img>
                    {{ card.detalle }}
                  </div>
                
                  <div *ngIf="card.imagen == ''">
                      <ion-label (click)="ObtenerDatosCards(card.id)">{{ card.detalle }}</ion-label>
                  </div>
                  <ion-row>
                    <ion-col col-3 no-padding>
                      <ion-button no-margin text-center fill="clear" style="pointer-events: none;">
                        <ion-icon [name]="card.favorita"></ion-icon> 
                      </ion-button>
                    </ion-col>
                    <ion-col col-3 no-padding>
                      <ion-button no-margin text-center fill="clear" style="pointer-events: none;">
                        <ion-icon [name]="card.alarma"></ion-icon>
                      </ion-button>
                    </ion-col>
                    <ion-col col-3 no-padding>
                      <ion-button no-margin text-center fill="clear" style="pointer-events: none;">
                        <ion-icon [name]="card.guardada"></ion-icon>
                      </ion-button>
                    </ion-col>
                    <ion-col col-3 no-padding>
                      <ion-button no-margin float-right fill="clear" (click)="CargarBotonesOpciones(card)">
                        <ion-icon name="reorder"></ion-icon>
                      </ion-button>
                    </ion-col>
                  </ion-row>
                </ion-card-content>
              </ion-card>

              
            </ion-col>
          </ion-row>
        </ion-grid>
      </ion-slide>
    </ion-slides>
    <ion-infinite-scroll threshold="50px" (ionInfinite)="AgregarMasNoticias($event)">
        <ion-infinite-scroll-content
          loadingSpinner="bubbles"
          loadingText="Cargando datos...">
        </ion-infinite-scroll-content>
      </ion-infinite-scroll>
</ion-content>

<app-footer></app-footer>

and typescript

    CambiarCategoria(index)
  {
    this.databaseService.GuardaSQLlite(10, index);

    if(index == "0")
    {
      if(this.cardCat0 != null)
      {
        this.slides.slideTo(index);
        console.log("ENTRA CAMBIA POR CATEGORIA 0");
        this.FocusCategorias(index);
      }
    }
    else if(index == "1")
    {
      if(this.cardCat1 == undefined)
      {
        this.slides.slideTo(index);
        console.log("ENTRA CAMBIA POR CATEGORIA 1");
        this.content.scrollToTop(400);
        this.LoaderNoticias('Cargando Noticias...');
        this.databaseService.getSesion(2).then(result => {
          this.imei = result.valor;
    
          this.databaseService.getSesion(1).then(result => {
            this.token = result.valor;

            this.databaseService.getSesion(10).then(resultCategoriaActiva => {
              this.categoriaActiva = resultCategoriaActiva.valor

              this.databaseService.getSesion(9).then(resultTotalCategorias => {     
                var datosVisualizar = JSON.parse(resultTotalCategorias.valor);
                Object.keys(datosVisualizar).forEach(key => {
      
                  if(key == index)
                  {
                    this.categorias = datosVisualizar[key]["id"];
                  }
                });

                var nuevaCategoria = this.categorias;
                var guardarPagina = 1;
                let datos = { 
                  pagina: 0, 
                  token: this.token,
                  imei: this.imei,
                  categoria: nuevaCategoria
                };

                this.categories = nuevaCategoria.toString(); //SE SELECCIONA LA CATEGORIA EN LOS SEGMENTOS
                this.FocusCategorias(nuevaCategoria.toString());
        
                this.esqueletoService.CargarNoticiasPorCategoriaGeneral(datos).then((result) => 
                {
                  if (result != null) 
                  {
                    let datos = result.toString().split('|');
          
                    if(datos[0] == "777")
                    {
                      var datosVisualizar = JSON.parse(datos[1]);

                      Object.keys(datosVisualizar).forEach(key => {
        
                        if(datosVisualizar[key]["favorita"] == 0)
                        {
                          datosVisualizar[key]["favorita"] = "star-outline";
                        }
                        else
                        {
                          datosVisualizar[key]["favorita"] = "star";
                        }
        
                        if(datosVisualizar[key]["alarma"] == 0 )
                        {
                          datosVisualizar[key]["alarma"] = "remove-circle-outline";
                        }
                        else
                        {
                          datosVisualizar[key]["alarma"] = "remove-circle";
                        }
        
                        if(datosVisualizar[key]["guardada"] == 0 )
                        {
                          datosVisualizar[key]["guardada"] = "folder-open";
                        }
                        else
                        {
                          datosVisualizar[key]["guardada"] = "folder";
                        }
                      });
        
                      this.databaseService.GuardaSQLlite(12, guardarPagina.toString()); //SE GUARDA LA PAGINA ACTUAL DE LA CATEGORIA 1
                      this.databaseService.GuardaSQLlite(10, nuevaCategoria.toString()); //SE GUARDA LA CATEGORIA ACTUAL
                      this.cardCat1 = datosVisualizar;
                      this.loadingController.dismiss();
                    }
                    else if (datos[0] == "305")
                    {
                      this.loadingController.dismiss();
                      this.MostrarAlerta("Noticias","",datos[2]);
                    }
                    else if (datos[0] == "310")
                    {
                      this.loadingController.dismiss();
                      this.MostrarAlerta("Noticias","",datos[2]);
                    }
                    else if(datos[0] == "315")
                    {
                      this.loadingController.dismiss();
                      this.MostrarAlerta("Noticias","",datos[2]);
                    }
                    else if(datos[0] == "000")
                    {
                      this.loadingController.dismiss();
                      this.MostrarAlerta("Noticias","","Estimado usuario, hubo un error inesperado.");
                    }   
                  } 
                  else 
                  {
                    this.loadingController.dismiss();
                    this.MostrarAlerta("Noticias","","Estimado usuario, hubo un error inesperado.");
                  }

                }, (errorDatosNoticias) => {
                  this.loadingController.dismiss();
                  this.MostrarAlerta("Noticias","","Estimado usuario, hubo un error inesperado.");
                });

              }, (errorTotalCategorias) => {
                this.loadingController.dismiss();
                this.MostrarAlerta("Noticias","","Estimado usuario, hubo un error inesperado.");
              });

            }, (errorCategoriaActiva) => {
              this.loadingController.dismiss();
              this.MostrarAlerta("Noticias","","Estimado usuario, hubo un error inesperado.");
            });
          }, (errorToken) => {
            this.loadingController.dismiss();
            this.MostrarAlerta("Noticias","","Estimado usuario, hubo un error inesperado.");
          });
        }, (errorImei) => {
          this.loadingController.dismiss();
          this.MostrarAlerta("Noticias","","Estimado usuario, hubo un error inesperado.");
        });
      }
      else
      {
        this.slides.slideTo(index);
        console.log("ENTRA CAMBIA POR CATEGORIA 1");
        this.databaseService.getSesion(9).then(resultTotalCategorias => {
          var datosVisualizar = JSON.parse(resultTotalCategorias.valor);
          Object.keys(datosVisualizar).forEach(key => 
          {
            if(key == index)
            {
              this.categories = datosVisualizar[key]["id"];
              this.databaseService.GuardaSQLlite(10, datosVisualizar[key]["id"]); //SE GUARDA LA CATEGORIA ACTUAL
              this.FocusCategorias(datosVisualizar[key]["id"]);
            }
          });

        }, (errorTotalCategorias) => {
          this.loadingController.dismiss();
          this.MostrarAlerta("Noticias","","Estimado usuario, hubo un error inesperado.");
        });
      }
    }
}

    CambiarSlide()
  {
    this.slides.getActiveIndex().then(index => {

      console.log("el slide activo es: " + index);

      if(index == 0)
      {
        this.content.scrollToTop(400);
        this.categories = index.toString(); //SE SELECCIONA LA CATEGORIA EN LOS SEGMENTOS
        this.FocusCategorias(index.toString());
        this.databaseService.GuardaSQLlite(10, index.toString()); //SE GUARDA LA CATEGORIA ACTUAL
        console.log("ENTRA CAMBIA POR SLIDE 0");
      }

      else if(index == 1)
      {
        if(this.cardCat1 == undefined)
        {
          console.log("ENTRA CAMBIA POR SLIDE 1");
          this.content.scrollToTop(400);
          this.LoaderNoticias('Cargando Noticias...');
          this.databaseService.getSesion(2).then(result => {
            this.imei = result.valor;
      
            this.databaseService.getSesion(1).then(result => {
              this.token = result.valor;

              this.databaseService.getSesion(10).then(resultCategoriaActiva => {
                this.categoriaActiva = resultCategoriaActiva.valor

                this.databaseService.getSesion(9).then(resultTotalCategorias => {     
                  var datosVisualizar = JSON.parse(resultTotalCategorias.valor);
                  Object.keys(datosVisualizar).forEach(key => {
        
                    if(key == index.toString())
                    {
                      this.categorias = datosVisualizar[key]["id"];
                    }
                  });

                  var nuevaCategoria = this.categorias;
                  var guardarPagina = 1;
                  let datos = { 
                    pagina: 0, 
                    token: this.token,
                    imei: this.imei,
                    categoria: nuevaCategoria
                  };

                  this.categories = nuevaCategoria.toString(); //SE SELECCIONA LA CATEGORIA EN LOS SEGMENTOS
                  this.FocusCategorias(nuevaCategoria.toString());
          
                  this.esqueletoService.CargarNoticiasPorCategoriaGeneral(datos).then((result) => 
                  {
                    if (result != null) 
                    {
                      let datos = result.toString().split('|');
            
                      if(datos[0] == "777")
                      {
                        var datosVisualizar = JSON.parse(datos[1]);

                        Object.keys(datosVisualizar).forEach(key => {
          
                          if(datosVisualizar[key]["favorita"] == 0)
                          {
                            datosVisualizar[key]["favorita"] = "star-outline";
                          }
                          else
                          {
                            datosVisualizar[key]["favorita"] = "star";
                          }
          
                          if(datosVisualizar[key]["alarma"] == 0 )
                          {
                            datosVisualizar[key]["alarma"] = "remove-circle-outline";
                          }
                          else
                          {
                            datosVisualizar[key]["alarma"] = "remove-circle";
                          }
          
                          if(datosVisualizar[key]["guardada"] == 0 )
                          {
                            datosVisualizar[key]["guardada"] = "folder-open";
                          }
                          else
                          {
                            datosVisualizar[key]["guardada"] = "folder";
                          }
                        });
          
                        this.databaseService.GuardaSQLlite(12, guardarPagina.toString()); //SE GUARDA LA PAGINA ACTUAL DE LA CATEGORIA 1
                        this.databaseService.GuardaSQLlite(10, nuevaCategoria.toString()); //SE GUARDA LA CATEGORIA ACTUAL
                        this.cardCat1 = datosVisualizar;
                        this.loadingController.dismiss();
                        this.loadingController.dismiss();
                      }
                      else if (datos[0] == "305")
                      {
                        this.loadingController.dismiss();
                        this.MostrarAlerta("Noticias","",datos[2]);
                      }
                      else if (datos[0] == "310")
                      {
                        this.loadingController.dismiss();
                        this.MostrarAlerta("Noticias","",datos[2]);
                      }
                      else if(datos[0] == "315")
                      {
                        this.loadingController.dismiss();
                        this.MostrarAlerta("Noticias","",datos[2]);
                      }
                      else if(datos[0] == "000")
                      {
                        this.loadingController.dismiss();
                        this.MostrarAlerta("Noticias","","Estimado usuario, hubo un error inesperado.");
                      }   
                    } 
                    else 
                    {
                      this.loadingController.dismiss();
                      this.MostrarAlerta("Noticias","","Estimado usuario, hubo un error inesperado.");
                    }

                  }, (errorDatosNoticias) => {
                    this.loadingController.dismiss();
                    this.MostrarAlerta("Noticias","","Estimado usuario, hubo un error inesperado.");
                  });

                }, (errorTotalCategorias) => {
                  this.loadingController.dismiss();
                  this.MostrarAlerta("Noticias","","Estimado usuario, hubo un error inesperado.");
                });

              }, (errorCategoriaActiva) => {
                this.loadingController.dismiss();
                this.MostrarAlerta("Noticias","","Estimado usuario, hubo un error inesperado.");
              });
            }, (errorToken) => {
              this.loadingController.dismiss();
              this.MostrarAlerta("Noticias","","Estimado usuario, hubo un error inesperado.");
            });
          }, (errorImei) => {
            this.loadingController.dismiss();
            this.MostrarAlerta("Noticias","","Estimado usuario, hubo un error inesperado.");
          });
        }
        else
        {
          console.log("ENTRA CAMBIA POR SLIDE 1");
          this.databaseService.getSesion(9).then(resultTotalCategorias => {
            var datosVisualizar = JSON.parse(resultTotalCategorias.valor);
            Object.keys(datosVisualizar).forEach(key => 
            {
              if(key == index.toString())
              {
                this.categories = datosVisualizar[key]["id"];
                this.databaseService.GuardaSQLlite(10, datosVisualizar[key]["id"]); //SE GUARDA LA CATEGORIA ACTUAL
                this.FocusCategorias(datosVisualizar[key]["id"]);
              }
            });

          }, (errorTotalCategorias) => {
            this.loadingController.dismiss();
            this.MostrarAlerta("Noticias","","Estimado usuario, hubo un error inesperado.");
          });
        }
      }
  }

Any comments or help will always be well appreciated by me. Have a nice day

Posts: 1

Participants: 1

Read full topic


Viewing all articles
Browse latest Browse all 70747

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>