2017-12-22 8 views
0

Wenn das Formular gesendet wird, wird ein Anruf an den Server und Modal wird angezeigt. Wenn die Antwort vom Server erfolgreich ist, muss das Modal geschlossen und eine neue Seite geladen werden.Schließen Bootstrap modal im Controller nach Erhalt der Antwort vom Server

Ich habe versucht, ng-show, ng-if, basierend auf dem Wert im Controller zu aktivieren/deaktivieren, aber dies nicht den modalen Hintergrund entlassen. Ich bin in der Lage, das modale auf der gleichen Seite zu schließen, indem ich data-follow = "modal" benutze, aber wie mache ich das aus dem Controller-Bereich, bevor ich zu einer neuen Seite navigiere?

<div id="myModal" class="modal fade" role="dialog" aria-hidden="true"> 
<div class="modal-dialog"> 
    <div class="modal-content">  
    <img src="img/processing.gif" id="ajaxSpinnerImage" title="working..."> 
    </div> 
</div> 

Wenn Schaltfläche Senden wird

geklickt
<button type="submit" data-toggle="modal" 
data-target="#myModal" ng-click=" formsubmit(orderForm.$valid); ></i> 
Place Order </button> 

Aufruf an den Server von dem Controller-

$scope.formsubmit = function (isValid) { 
     if (isValid) {        
        $http.post($scope.url). 
        success(function (data, status) { 

         //NEED TO CLOSE THE MODAL HERE 
        //navigating to a new page now 
        window.location.assign("NewPageToNavigate.html"); 

        }) 
     }     

Antwort

2

Draht dieser Bootstrap modale Option zum Server resopnse und die Modal wird geschlossen:

$('#myModal').modal('hide'); 

More info and options on the Bootstrap documentation.

In Bezug auf die Entfernung der Body-und Hintergrund-Klassen, überprüfen Sie Ihren Code als Bootstrap unter normalen Bedingungen sollte diese beim Brennen der Methode oben entfernen.

+0

Ich musste auch diese fügen Sie den Hintergrund zu entfernen, nachdem die Seite geladen wurde. $ ('body'). RemoveClass ('modal-open'); $ ('. Modal-background'). Remove(); – Arun

+0

Ok, seltsam. Das Ausführen der Bootstrap-Methode sollte das für Sie tun. –

+0

Anstelle von '.trigger (" click ");' kann man '.click()' verwenden. Auch das kann Modale doppelt auslösen. Wenn Sie eine 100% vollständige Möglichkeit haben möchten ** ANY ** modal zu verstecken, benutzen Sie '$ ('. Modal'). Filter (': visible'). Modal ('hide')'. –

0

Schließen Sie die modal, nachdem die Reaktion in der Steuerung empfangen wurde

$('#myModal').modal('hide'); 
$('body').removeClass('modal-open'); 
$('.modal-backdrop').remove(); 
Verwandte Themen