Ich habe versucht, Parameter in der Push-Methode von ionic2 zu übergeben. so was
this.nav.Push(SecondPage, {
thing1: data1,
thing2: data2
});
aber gibt es eine Möglichkeit, Parameter in pop () zu übergeben.
Ich schlage vor, Sie verwenden Events . Alles, was Sie tun müssen, ist, ein Ereignis auf der übergeordneten Seite zu abonnieren und das Ereignis dann auf dem untergeordneten Element zu veröffentlichen, wobei die gewünschten Daten übergeben werden:
// taken from the docs
import { Events } from 'ionic-angular';
constructor(public events: Events) {}
// first page (publish an event when a user is created)
function createUser(user) {
console.log('User created!')
events.publish('user:created', user);
}
// second page (listen for the user created event)
events.subscribe('user:created', (userEventData) => {
// userEventData is an array of parameters, so grab our first and only arg
console.log('Welcome', userEventData[0]);
});
So habe ich es in ionic-3 erreicht und finde es einfacher.
Seite, von der aus wir knacken ()
this.navCtrl.getPrevious().data.thing1 =data1;
this.navCtrl.getPrevious().data.thing2 =data2;
this.navCtrl.pop();
Seite nach Pop ():
public ionViewWillEnter() {
this.thing1 = this.navParams.get('thing1')|| null;
this.thing2 = this.navParams.get('thing2')|| null;
}
Derzeit glaube ich, dass dies nicht möglich ist.
Es gibt eine Github-Ausgabe , für die das Ionic-Kernteam jedoch eine großartige Diskussion hat. Es klingt, als hätten sie es auch in die Ionic 2-Roadmap aufgenommen! In der Github-Ausgabe wurden auch einige Problemumgehungen vorgeschlagen, z. B. das Hinzufügen der ParentPage zu den NavParams, die auf der ChildPage angezeigt werden, aber es ist alles ziemlich hackig.
Verwenden Sie popTo()
anstelle von pop()
popTo()
hat einen params?
-Parameter, an den Sie Ihre Parameter wie folgt übergeben können:
this.nav.popTo(SecondPage, {
thing1: data1,
thing2: data2
});
Anscheinend gibt es | Siehe Doc Reference |
pop(opts)
nimmt einen Parameter vom Typobject
so
einen Schritt zurückgehen
this.nav.pop({
thing1: data1,
thing2: data2
});
und um zu einer bestimmten Ansicht im Protokollstapel zu gelangen
this.nav.popTo(SecondPage, {
thing1: data1,
thing2: data2
});
und zum Stamm des Stapels gehen
this.nav.popToRoot({
thing1: data1,
thing2: data2
});
Zum Abrufen der Parameter _ (Ich denke, das sollte funktionieren. Ungeprüft!)
export class SecondPage{
constructor(params: NavParams){
this.params = params;
console.log(this.params.get('thing1'));
}
}
Für gesendete Daten mit Pop können Sie die getPrevious () -Methode verwenden.
Beim Verlassen der aktuellen Seite die vorherige Seite aufrufen und Daten senden
ionViewWillLeave() {
this.navCtrl.getPrevious().data.formData = {credentials: {...}};
}
Auf der nächsten Seite erhalten Sie Daten von navParams
ionViewWillEnter() {
if (this.navParams.get('formData')) {
// do something
}
}
einen Rückruf übergeben, wenn in diesem Forum von aaronksaunders umgestellt wird
https://forum.ionicframework.com/t/solved-ionic2-navcontroller-opopwithwithparams/58104/4
Ich werde es ausprobieren.
Wenn Sie eine Ionenwinkelanwendung verwenden, können Sie ionic-angular
Ereignisse
page1.ts
import { Events,NavController } from 'ionic-angular';
export class page1 {
constructor(private events: Events,
private nvCtrl: NavController
) {}
goToPage2() {
this.navCtrl.pop();
this.event.publish('your-event');
}
}
page2.ts
import { Events} from 'ionic-angular';
export class page1 {
constructor(private events: Events,
private nvCtrl: NavController
) {}
ionViewDidLoad() {
this.events.subscribe('your-event');
}
}