2017-07-14 10 views
6

उपयोगकर्ता my profile पृष्ठ (या टैब) को छूता है, तो उपयोगकर्ता तो प्रवेश न होने पर यह login page से पता चलता के रूप में login page जहां यह header back button और यह है below.On दिखाया बंद कर देता है ठीक काम कर रहा है (आप नीचे दिए गए कोड को देख सकते हैं)। जब उपयोगकर्ता hardware back button on Android device हिट करता है तो मुझे वही कार्यक्षमता चाहिए। लेकिन यह ऐप बंद कर देता है। क्या आप मुझे बता सकते हैं कि इस समस्या को कैसे हल किया जाए? अगर आपको अधिक जानकारी चाहिए तो कृपया मुझे बताएं।हार्डवेयर वापस बटन टैब पर एप्लिकेशन आयोनिक 3 सक्षम ऐप

मेरी-profile.ts

constructor(public navCtrl: NavController, public app: App, public userService: UserService 
     ) { 
     if (!this.userService.userDetails) { 
      this.app.getRootNav().setRoot('Login', { profile: true }); 
      return; 
     } 
    } 

login.ts

constructor(public navCtrl: NavController, public navParams: NavParams) { 
     this.profile = this.navParams.data.profile; 
    } 

    back() { 
     if (this.profile) {//not logged in user 
      this.navCtrl.setRoot('TabsPage'); 
     } 
    } 

login.html

<ion-header> 
    <ion-navbar> 
    <ion-buttons left> 
     <button ion-button *ngIf="profile" (click)="back()" tappable><ion-icon name="arrow-back"></ion-icon></button> 
    </ion-buttons> 
    <ion-title>login</ion-title> 
    </ion-navbar> 
</ion-header> 

<ion-content padding> 

</ion-content> 

उत्तर

7

आप मंच का उपयोग कर सकते registerBackButtonAction() उपयोगकर्ता को मूल बैक बटन दबाते समय संभालने की विधि।

import { Platform } from 'ionic-native'; 
... 
constructor(public platform: Platform){ 

    platform.registerBackButtonAction(() => { 
    if (navCtrl.canGoBack()) { // CHECK IF THE USER IS IN THE ROOT PAGE. 
     navCtrl.pop(); // IF IT'S NOT THE ROOT, POP A PAGE. 
    } else { 
     platform.exitApp(); // IF IT'S THE ROOT, EXIT THE APP. 
    } 
    }); 

} 

लेकिन मामला यहाँ है कि आप जड़ों स्थापित कर रहे हैं और आगे बढ़ाने नहीं पृष्ठों है, इसलिए इस जब जड़ पेज में आयोनिक के सामान्य व्यवहार है, और वहाँ के लिए, एप्लिकेशन बंद हो पॉप कुछ भी नहीं है।

इस मामले आप अपने login.ts पर कुछ इस तरह कर सकते हैं में

platform.registerBackButtonAction(() => { 
    this.back(); 
}); 

इसलिए हर बार उपयोगकर्ता प्रवेश पृष्ठ में है और हार्डवेयर वापस बटन दबाता यह बस अपने back() विधि कॉल कि हूँ रूट को दूसरे पृष्ठ पर सेट करें।

उम्मीद है कि इससे मदद मिलती है।

+0

बहुत बहुत धन्यवाद, दोस्त। यह पूरी तरह से ठीक काम कर रहा है :) – Sampath

+0

क्यों न केवल लॉगिन पृष्ठ को नौसेना के ढेर पर "धक्का" दें, और फिर बैक बटन केवल एक पॉप कर सकता है (क्योंकि हार्डवेयर वापस डिफ़ॉल्ट रूप से करेगा)? जड़ों को सेट करने और मेरे लिए बटन ओवरराइड करने से आसान लगता है। –

+0

@rory_za ने इसके बारे में सोचा, लेकिन हो सकता है कि ऐप को काम करने की ज़रूरत हो, जैसे 'अरे, आप जो भी ऐप चाहते हैं उसका उपयोग कर सकते हैं, लेकिन यदि आप अपनी प्रोफ़ाइल देखने के लिए जाते हैं और यह लॉग नहीं है तो आपको लॉग इन करने की आवश्यकता है' और इस तरह से पृष्ठ को धक्का देना सबसे अच्छा नहीं है क्योंकि उपयोगकर्ता वापस जा सकता है और प्रोफ़ाइल पेज को भी लॉग इन नहीं कर सकता है, इसलिए इस मामले में जड़ें सेट करना सर्वोत्तम तरीकों में से एक है। दूसरा मोडल का उपयोग कर रहा है ताकि वह पेज पर वापस कुछ पास कर सके यदि उपयोगकर्ता –

संबंधित मुद्दे