Ich habe eine Bootstrap modal mit einem form
in einem div
Set mit ng-class
:AngularJS: ng-Klasse Auffrischen nicht, wenn Bootstrap modal wieder öffnet
<div id="modalNewOrder" class="modal fade" data-modalName="order" role="dialog" ng-controller="NewOrderController as NewOrderCtrl">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close pull-left" data-dismiss="modal">X</button>
<h4 class="modal-title">
New order
</h4>
</div>
<div class="modal-body">
<div ng-class="NewOrderCtrl.position">
<form>
// input text here
</form>
Wenn die modalen geladen wird, seine NewOrder.position setzt seine css zu zentrieren. Wenn das Formular verarbeitet wird, wird NewOrder.position nach oben aktualisiert und die Ergebnisse werden darunter angezeigt.
Jetzt das Problem: Ich möchte NewOrder.position zurückgesetzt werden, um zu zentrieren, wenn das Modal wieder geöffnet wird. Aber selbst wenn ich NewOrder.position zurücksetze, scheint die ng-Klasse nicht aktualisiert zu werden. Wie mache ich das?
Ich verwende auf meinem Controller, aber seine Arbeit nicht ng-Klasse zu aktualisieren:
$("#modalNewOrder").on("hidden.bs.modal", function() {
$(this).find('form')[0].reset();
self.clearQuery();
self.position = "mycss-position-center";
});
***** ***** UPDATE
Naren Vorschlag Nach und Experimentieren ein wenig, ich habe meinen Code aktualisiert. In meinem html Ich habe:
<div ng-class="{'mycss-position-top' : NewOrderCtrl.top, 'mycss-position-center' : !NewOrderCtrl.top}">
und
<form ng-submit="processing()">
Und in meinem Controller, ich habe:
var self = this;
self.top = false;
$("#modalNewOrder").on('shown.bs.modal', function() {
self.top = false;
});
$("#modalNewOrder").on("hidden.bs.modal", function() {
self.top = false;
});
self.processing = function(){
self.top = true;
};
Das Problem ist jetzt, dass in der ersten Wiedereröffnung des Modal , self.top wird als "wahr" gewertet, auch wenn die "on show" -Funktion verarbeitet wird und "false" in console.log angezeigt wird. Nur wenn ich das Modal wieder schließe und es wieder öffne, dann wird es falsch.
* UPDATE *
Die vorgeschlagene Lösung arbeitet. Ich habe einen Syntaxfehler an einem anderen Ort gefunden, der dieses letzte falsche Verhalten verursacht hat.
wie setze ich Prozess falsch, wenn die modale wieder geöffnet? –
gut, vielleicht kann ich versuchen, das Reset auf meine "auf verstecken" -Funktion einzufügen ... Ich werde versuchen, –
Ich musste es auf meine ursprüngliche "on hide" -Funktion zurücksetzen, aber mit diesem Zusatz funktionierte Ihre Lösung! danke –