2016-08-18 8 views
8

Używam joński 2.Poruszanie się z powrotem do korzeni - menu przycisku przełączania łamanego

Page 1 (SearchPage) -> popover -> Strona 2 (MapPage) -> Strona 1 (SearchPage) (menuToggle nie działa)

mam stronę korzeniowy (SearchPage):

html

<ion-header> 
    <ion-navbar> 
    <button menuToggle> 
     <ion-icon name="menu"></ion-icon> 
    </button> 
    </ion-navbar> 
</ion-header> 

ts

presentPopover(event: Event): void { 
    let popover: Popover = this.popoverController.create(SearchPopOverPage, { 
     ev: event, 
     employeeModel: this.employeeModel 
    }); 
    popover.present(); 
    } 

popover

presentFilterMap(event: Event) { 
    this.viewCtrl.dismiss().then(() => { 
     this.nav.push(MapPage, { 
     ev: event, 
     employeeModel: this.employeeModel, 
     fromSearch: true 
     }) 
    }); 
    } 

Ale gdy próbuję wrócić do strony głównej (z parametrem), wyświetla się przycisk menu przełączania (3 linie), ale gdy klikam to nie działa (np nie robi nic, gdzie powinien wyświetlać menu boczne).

ts plików (MapPage), która powraca do korzeni:

this.nav.insert(0, SearchPage, { 
    employeeModel: this.employeeModel 
    }); 

Gdy próbuję popToRoot(options) to działa i przycisk menu przełącznik działa. Jednak nie przeładowuje strony z nowym parametrem.

Jakieś pomysły, jak powinienem wrócić do strony głównej z parametrem?

Dzięki

UPDATE: Próbowałem następujących, ale nie wrócić do korzeni:

let options = { 
    employeeModel: this.employeeModel 
    }; 
    this.nav.popToRoot(options); 

UPDATE: Próbowałem również zmieniają popovers zadzwonić do następnej strony , ale z małym sukcesem. Teraz przycisk Wstecz w MapPage działa, ale kiedy wchodzę na stronę główną, menuToggle nadal nie reaguje na kliknięcia.

presentFilterMap(event: Event) { 
    this.nav.push(MapPage, { 
     employeeModel: this.employeeModel, 
     fromSearch: true 
    }).then(() => { 
     this.viewCtrl.dismiss(); 
    }); 
    } 

Jeśli nie odrzucenie popover,

this.nav.push(MapPage, { 
     employeeModel: this.employeeModel, 
     fromSearch: true 
    }); 

wtedy, gdy używam przycisku Wstecz na MapPage powrotem do korzeni, popover nadal istnieje, a menuToggle działa zgodnie z oczekiwaniami. Ale jeśli wolałbym wrócić do strony głównej (co muszę zrobić), to popover nie ma, a menuToggle nie odpowiada.

Oznacza to, że problem związany jest z popover.

+0

Myślę, że mój problem jest związany z popover, ponieważ strona 2 (MapPage) menuToggle nie działa albo . Tak więc po kliknięciu przycisku na popover, myślę, że jest to kłopotliwe z nawigacją. Tylko zgadnij. – Richard

+0

Spojrzałem na mój kod Ionic 2. Spróbuj zrobić dokładnie to, co wcześniej zainstalowali z menu, zmieniając katalog główny, aby uniknąć strzałki wstecznej. 'this.nav.setRoot (SearchPage);' – theblindprophet

+0

theblindprophet, przepraszamy za poświęcenie wieków na odpowiedź. 'this.nav.setRoot (SearchPage);' prowadzi mnie do 'SearchPage', ale z tym samym problemem przycisk menuToggle nie działa. To sprawia, że ​​myślę, że problem polega na tym, że mam między nimi "popover". Myślę, że to jakoś to "przełamuje". – Richard

Odpowiedz

1

Rozwiązanie: Użyj zdarzenia do obsługi parametrów i pop wykorzenić

let data = { 
    eModel: this.eModel 
    }; 
events.publish('employee:update', data); 
this.nav.popToRoot(); 

W konstruktora SearchPage:

events.subscribe('employee:update', (data) => { 
//do whatever you need to do with your data: 
    let EModel = data[0].eModel; 
}); 
+0

Skoro przekazujesz dane, czy nie byłoby lepiej, gdybyś stworzył usługę danych i użył * observables * do subskrypcji? Wynik byłby taki sam, ale myślę, że korzystanie z usługi jest lepszym sposobem na obsługę danych aplikacji niż korzystanie z wydarzeń. Jeśli chcesz, mogę dodać odpowiedź z większą ilością szczegółów. – sebaferreras

0
import { App } from 'ionic-angular'; 

constuctor(public app: App) {}; 

pushSignupPage() { 
    this.viewCtrl.dismiss().then(() => { 
     this.app.getRootNav().push(SignupPage); 
    }); 
    } 

to praca dla mnie. Powodzenia

+0

Chociaż ten kod może odpowiedzieć na pytanie, podanie dodatkowego kontekstu dotyczącego tego, w jaki sposób i/lub dlaczego rozwiązuje problem, poprawiłoby długoterminową wartość odpowiedzi. Przeczytaj ten [jak-odpowiedź] (http://stackoverflow.com/help/how-to-answer) w celu uzyskania wysokiej jakości odpowiedzi. – thewaywewere

0

podczas nawigacji z powrotem ze strony mapy do wyszukiwarki

zastosowanie:

this.navCtrl.push(SearchPage, { employeeModel: this.employeeModel }); 
Powiązane problemy