gpt4 book ai didi

javascript - ionic 2 - navPush 出于某种原因无法正常工作

转载 作者:行者123 更新时间:2023-11-29 10:31:25 24 4
gpt4 key购买 nike

navPush 停止工作,我真的不知道为什么。它不适用于 this.nav.push() 或 navPop。我试过更多的按钮,导航按钮,我真的不明白为什么不起作用。

html文件

<ion-header>
<ion-toolbar color="danger">
<ion-title>
{{ nombreLista }}
</ion-title>
<ion-buttons end
[navPush]="home"
[navParams]="DataLista">
<button ion-button icon-only color="white">
Home <ion-icon name="ios-arrow-forward"></ion-icon>
</button>
</ion-buttons>

</ion-toolbar>
</ion-header>

<ion-content padding>

<ion-list *ngFor="let lista of listaFinal">
<ion-list-header *ngIf="lista.articulos.length > 0"> Pasillo {{lista.pasillo}} </ion-list-header>
<ion-item-sliding *ngFor="let articulo of lista.articulos">
<ion-item>{{articulo}}</ion-item>
<ion-item-options side="right">
<button ion-button expandable
(click)="onDelete(articulo)"
color="danger"
><ion-icon name="md-trash"></ion-icon>Borrar</button>
</ion-item-options>
</ion-item-sliding>
</ion-list>

<button (click)="onPush()">
<ion-icon name="add"></ion-icon>
</button>

<ion-fab bottom right>
<button ion-fab mini
color="danger"
[navPush]="elegirItem"
[navParams]="DataLista">
<ion-icon name="add"></ion-icon>
</button>
</ion-fab>
</ion-content>

ts 文件

import {Component, OnInit} from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';
import {HomePage} from "../home/home";
import { ElegiritemsPage } from "../elegiritems/elegiritems";


@Component({
selector: 'page-lista-terminada',
templateUrl: 'lista-terminada.html',
})
export class ListaTerminadaPage implements OnInit{
home=HomePage;
elegirItem = ElegiritemsPage;
nombreLista;
listaFinal : {pasillo: number, articulos:string []}[];
DataLista;



constructor(public navCtrl: NavController, public navParams: NavParams) {
}


ngOnInit(){
this.DataLista = this.navParams.data;
this.listaFinal = this.navParams.get('listaOrden');
this.nombreLista = this.navParams.get('listaNombre');
this.DataLista.listaActiva = this.listaFinal;
}


//recibe un articulo y recorre el arreglo, en caso de ser iguales, se elimina

onDelete(articulo) {
for (var i = 0; i < this.listaFinal.length; i++) {
for (var x = 0; x < this.listaFinal[i].articulos.length; x++) {
if (this.listaFinal[i].articulos[x] === articulo) {
this.listaFinal[i].articulos.splice(x, 1)
}
}
}
this.DataLista.listaActiva = this.listaFinal;
}
onPush(){
console.log('jose');
this.navCtrl.push(this.elegirItem);

}
}

ElegirItems.html

<ion-header>
<ion-toolbar color="danger">
<ion-title>
{{nombreLista}}
</ion-title>

<ion-buttons end>
<button ion-button
clear color="white"
(click)="onOrganizaLista()"
[navPush]="listaTerminada"
[navParams]="DataLista">LISTO</button>
</ion-buttons>
</ion-toolbar>
</ion-header>


<ion-content padding class="backgroundd">
<ion-searchbar (ionInput)="getItems($event)">

</ion-searchbar>
<ion-list>
<ion-item *ngFor="let articulo of listaProductos">{{articulo.nombre}}
<button ion-button icon-only
item-end clear color="danger"
(click)="onItemSelect(articulo)"
><ion-icon [name]="articulo.estado ===0 ? addBoton : remBoton" ></ion-icon></button>
</ion-item>
</ion-list>
</ion-content>

elegiritems.ts

import {Component, OnInit} from '@angular/core';
import { NavParams } from 'ionic-angular';
import {HomePage} from "../home/home";
import {ListaTerminadaPage} from "../lista-terminada/lista-terminada";
import {Articulo} from "../../Data/articulo.interface";
import Organizador from '../../Data/Organizador';


@Component({
selector: 'page-elegiritems',
templateUrl: 'elegiritems.html',
})
export class ElegiritemsPage implements OnInit{
home=HomePage;
listaTerminada=ListaTerminadaPage;
listaProductos :Articulo[]=[];
productosElegidos: Articulo[] =[];
listaOrdenada : {pasillo: number, articulos:string[]}[];
nombreLista:string ='';
addBoton='ios-add-circle';
remBoton ='md-close';
DataLista;


constructor(public navParams: NavParams) {
}

ngOnInit(){
this.DataLista = this.navParams.data;
this.listaProductos = this.navParams.get('articulos');
this.nombreLista = this.navParams.get('listaNombre')
}

//Resetea el valor de la Lista ordenada, la cual es reducida en la pag siguiente, al volver atras le da el valor inicial

ionViewCanEnter(){
this.listaOrdenada = Organizador;
this.productosElegidos = this.navParams.get('listaActiva');
this.onActivos();
console.log(this.productosElegidos);
}

//Inicia una funcion dependiendo de si pertenece o no a la lista de productos elegidos
onItemSelect(articulo:Articulo){
if (articulo.estado === 0) {
this.onAddProduct(articulo);
articulo.estado = 1;
return
}
if (articulo.estado === 1)
{
this.onDeleteProduct(articulo);
articulo.estado=0;
return
}

}

//resetea los valores de estado de la lista de productos y a los valores activos los deja en estado 1
onActivos(){
for (var i =0; this.listaProductos.length; i++){
this.listaProductos[i].estado=0;
}
for (var x = 0; this.productosElegidos.length; x++){
this.productosElegidos[x].estado = 1;
}
}

//Agrega el articulo a la lista de productos elegidos
onAddProduct(articulo: Articulo) {
console.log(articulo);
this.productosElegidos.push(articulo);
console.log(this.productosElegidos);
}

//Elimina el articulo de la lista de productos elegidos
onDeleteProduct(articulo: Articulo){
const position = this.productosElegidos.findIndex((articuloEl:Articulo) =>{
return articuloEl.nombre == articulo.nombre
});
this.productosElegidos.splice(position,1)
}



//Revisa si el articulo seleccionado forma parte del arreglo de los productos elegidos, tambien cambia el icono
//NO IMPLEMENTADO

onChecked(articulo){
for (var i =0; i < this.listaProductos.length; i++) {
if (this. listaProductos[i].nombre === articulo.nombre){
return true
}
}
return false
}

//Agrega los articulos a una lista ordenada que obtiene desde la basa de datos, esta esta organizada por pasillos

onOrganizaLista(){
for (var i =0; i < this.listaOrdenada.length; i++) {
for (var x =0 ; x < this.productosElegidos.length; x++){
if (this.listaOrdenada[i].pasillo == this.productosElegidos[x].pasillo){
this.listaOrdenada[i].articulos.push(this.productosElegidos[x].nombre)
}
}
x=0;
}
//Alimenta el arreglo para tener el nombre y la lista ordenada
this.DataLista.listaOrden = this.listaOrdenada;
}

//Funcionalidad de la barra de busqueda, codigo de ionicDocs adecuado

getItems(ev:any){
this.listaProductos = this.navParams.get('articulos');

let val = ev.target.value;

if (val && val.trim() != ''){
this.listaProductos = this.listaProductos.filter((item: any) => {
return (item.nombre.toLowerCase().indexOf(val.toLowerCase()) > -1);
})
}
}
}

最佳答案

这是因为您没有传递有效的导航参数,并且目标组件有 ionViewCanEnter 需要 listaActiva 让 View 进入。

this.navCtrl.push(this.elegirItem);中传递有效的导航参数

或者

如果您不希望在 View 进入之前有任何“守卫”,请将 ionViewCanEnter 更改为 ionViewDidLoad

关于javascript - ionic 2 - navPush 出于某种原因无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45262302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com