2016-08-04 14 views
2

Ich habe ein kleines Problem mit der Grundalarm. also hier ist mein Szenario. -> Ich klicke auf die Schaltfläche Senden auf einer Seite, und wenn kein Datensatz zurückgegeben wird, wird es mir eine Warnmeldung geben. Ich klicke OK, um das zu verwerfen. -- Funktioniert gut. -> Ich wiederhole das gleiche Szenario zum zweiten Mal durch die Bereitstellung ungültiger Eingabe, so dass ich nicht wieder aufnehmen und Anwendung gibt mir die gleiche Warnung wieder. Ich klicke OK, um die Warnung zu verwerfen - Funktioniert nicht. Kann jemand auf Hilfe zu diesem ?? Hier ist mein Code, um die Datensätze zu holen:Ionic 2 Alert Problem

fetchGroupMembers(form) { 
    //referring this to obj because scope of this is confusing in callback functions 
    var obj = this; 
    //creating loader 
    let loading = Loading.create({ 
     content: "Please wait...", 
    }); 
    //Showing loader on current screen 
    obj.nav.present(loading); 
    //Send message to server to fetch the group members 
    obj.myGlobals.socket.emit('fetchGroupMembers', { groupCode: form.controls['groupCode'].value }); 
    obj.myGlobals.socket.on('groupMembers', function (result) { 
     while (obj.students.pop()); //removing all elements from array of students 
     //fetching each record and creating student 
     result.forEach(function (record) { 
     obj.students.push(new Student(record)); 
     }); 
     //on successfull fetch dismiss the loader 
     loading.dismiss(); 
     if (obj.students.length > 0) { 
     //set students to global 
     obj.myGlobals.students = obj.students 
     //navigating to next page with parameters 
     obj.nav.push(HostPage, { 
      Students: obj.students 
     }); 
     console.log(obj.nav); 
     } else { 
     //creating alert 
     obj.doAlert(); 
     } 
    }); 

    } 
    doAlert() { 
    let alert = Alert.create({ 
     title: 'No Student Found!!', 
     subTitle: "Please check group code. can't find students!!", 
     buttons: ['OK'] 
    }); 
    this.nav.present(alert); 
    } 
} 

Wenn ich die doAlert() auf eine Schaltfläche klicken rufen. es funktioniert wie Charme. Ich kann das Problem nicht verstehen, warum es in meinem Szenario nicht funktioniert. Jede Hilfe wäre willkommen. Danke,

+0

Könnten Sie bitte eine Demo Plunker erstellen, damit wir Kannst du sehen, was vor sich geht? – sebaferreras

+0

Ich weiß nicht wirklich, wie man den Plunker für verteilten Code erstellt (Client-Server und Server wiederum verbunden mit mLab DB). –

+0

Scheint, ich stolperte über ein ähnliches Problem: erste Popup funktioniert gut, zweite kann nicht entlassen werden. Ein Problem gemeldet: https://github.com/driftyco/ionic/issues/7554 Plunker hier: http://plnkr.co/edit/kC2EtfmONmJ9UxPVXkJE?p=preview @BajinderBudhwar: Ionic Bug-Bericht Vorlage hat einen praktischen Link zu einem Ionic Plunker-Vorlage, die Sie verwenden können, auch wenn Sie keinen ionischen Fehler senden möchten. – Gilead

Antwort

2

Wie in den Alert-Klasse docs diskutiert die richtige Art und Weise für das Versprechen von der Alert.dismiss zurück warten ist() aufrufen, lösen zu:

public TEST =() => { 
    let alert1 : Alert = Alert.create({ 
    title: 'Prompt 1', 
    message: "First", 
    buttons: [{ 
     text : 'OK', 
     handler :() => { 
     console.log("First OK"); 
     alert1.dismiss().then(() => { // wait for the previous transition to finish or the following alert will malfunction 
      let alert2 : Alert = Alert.create({ 
      title : 'Prompt 2', 
      message : "Second", 
      buttons : [{ 
       text : 'OK', 
       handler :() => { 
       console.log("Second OK"); 
       alert2.dismiss(); // DISMISSING MANUALLY 
       } 
      }] 
      }); 
      this.nav.present(alert2); 
     }); 
     } 
    }] 
    }); 
    this.nav.present(alert1); 
}; 
+0

Perfektes Beispiel .. !! wirklich schätze die Hilfe .. danke –

+0

@BajinderBudhwar Ich bin froh, dass es geholfen hat. Ein upvote und die Annahme der Antwort würde geschätzt werden :) – Gilead

+0

funktioniert nicht in ionischen 2 .. Irgendeine Idee? Es gibt mir 'Uncaught (in Versprechung): removeView wurde nicht gefunden' –