@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