2016-09-27 5 views
0

Я пытаюсь создать приложение, которое имеет следующий рабочий процесс.Свойства Iont2 navController не работают должным образом

  1. LoginPage
  2. HomePage
  3. Создать страницу запроса -> Присутствует в HomePage и меню
  4. Запрос страницы Success -> при создании запроса успех
  5. страница Список
  6. Запрос -> Присутствующие в HomePage и меню
  7. страница подробно
  8. Request -> по щелчку запроса пункта

На странице входа, когда пользователь дал правильные учетные данные, я звоню в службу. Если это успех, я делаю главную в качестве корня контроллера nav.

if(getLoginDetails.status == "success") 
{ 
this.navCtrl.setRoot(HomePage); 
} 

, но до сих пор, когда я использовал this.navCtrl.length() в HomePage конструктора, его шоу 2.How это может произойти, когда я просто заменить корневой элемент навигации стека из LoginPage с homepage.As в моем понимании, счетчик должен прийти, как 1. Кроме того, кроме входа в систему на каждой странице есть меню swipeEnabled = true и кнопка возврата. Теперь предположим, что пользователь перешел в HomePage, а затем создалRequestPage, а затем использовал меню, чтобы перейти на requestListPage, теперь мне нужно, чтобы при нажатии кнопки щелчка пользователь должен был зайти на домашнюю страницу. Для этого мой подход заключается в том, что когда пользователь нажимает меню, я удаляю все страницы в стеке навигации, кроме первого, который является нашей корневой страницей. Я пытался с этим способом, но его не Рабоче

this.navCtrl.remove(1,this.navCtrl.length(),{}).then(
()=>{ 
     this.navCtrl.push(RequestListPage) 
}); 

Но это не похоже на работу. Может кто-нибудь помочь мне в этом. Также несколько лучших документов для NavController ionic2.

ответ

0

У вас есть selector тэг, установленный в вашем @Component? Это небольшая ошибка в Ionic, которая заставляет страницу вставлять себя в стек, это объясняет, почему длина равна 2 и почему у вас есть кнопка возврата.

Если это так, удаление selector должно сделать трюк.


И почему бы не просто переключить логическое, если человек пришел через меню или нет? Затем просто нажмите на HomePage, если это логическое значение истинно. Упрощение и, вероятно, более чистый код.

+0

я не имеющий селектор в моем приложении. – RHUL

0

если вы поставите navCtrl в поставщике, который является способом:

В импорте поставщика

import { NavController, App } from 'ionic-angular'; 

в экспорт класса INIT

private navCtrl: NavController; 

в конструкторе

constructor(private app:App) { 

    this.navCtrl = app.getActiveNav(); 

} 

Определить функция перейти на главную страницу:

goToHomePage() { 

    this.navCtrl.setRoot(HomePage); 

} 

Теперь можно назвать это.navCtrl любой страницы, вам нравится

import { YourProvider } from "../../your-provider"; 


@Component({ 

    selector: 'page', 

    templateUrl: 'page.html', 

    providers: [YourProvider] 

}) 


export class YourPage{ 

    constructor(private yourProvider : YourProvider) { 

} 

goToHome() { 
    this.yourProvider.goToHomePage(); 
} 

теперь вы можете использовать navCtrl

Гудлак

Смежные вопросы