Formularvalidierung wird nicht aktualisiert, wenn das Element aus dem Modell entfernt wird. Fehler?

8

Ich habe in letzter Zeit AngularJS verwendet, und ich glaube, ich bin in einen verrückten Käfer geraten.

Erstens, hier ist ein funktionierender Code:

Anzeigen:

%Vor%

Controller:

%Vor%

Hier ist das Plunkr: Arbeitsbeispiel .

Ich finde den Code ziemlich einfach: Es gibt eine ng-repeat , die jede Telefonnummer anzeigt, die Sie bearbeiten / löschen können. Wenn eine Telefonnummer hinzugefügt wird, kann sie nicht leer sein. Die Senden-Schaltfläche wird deaktiviert, wenn eine leere Telefonnummer vorhanden ist.

Das Problem tritt auf, wenn der Absenden-Button über dem ng-repeat steht. Wenn Sie eine Telefonnummer hinzufügen, sie leer lassen und anschließend löschen, bleibt die Übergabeschaltfläche deaktiviert:

%Vor%

Hier ist der Plunkr: Beispiel für einen Fehler .

Ich liebe AngularJS, aber das hat mich fast verrückt gemacht. Ich habe mehr als 20 Stunden damit verbracht, diesen dämlichen Käfer zu jagen. Da eine normale Demo die Schaltfläche "Senden" unten hat, konnte ich das Problem nicht reproduzieren. Ich musste meinen tatsächlichen Code nehmen und den Code langsam auf das Minimum reduzieren. Es ist eine sehr große und komplexe App und ... Nun, ich höre jetzt auf zu jammern.

Meine Frage ist zweifach:

  1. Ist das ein Fehler? Ich habe das sogar mit dem instabilen Zweig (1.1.3) versucht, und es funktioniert genau so.

  2. Was kann ich tun, um es zu umgehen, ohne die Reihenfolge der Quellen zu ändern ? Ich weiß, dass ich meine Absenden-Schaltfläche über CSS bewegen kann, aber in meinem Fall ist das nicht wirklich eine Option; Ich brauche den Absenden-Button als erstes in der Form.

P.S. Hier ist ein Video davon in Aktion .

    
Joseph Silber 03.03.2013, 23:52
quelle

1 Antwort

5

Offenbar ist dies ein aktiver Fehler.

Siehe Ссылка

In diesem Fehler wurde eine Problemumgehung gepostet, die einen versteckten Zähler verwendet, der erhöht wird, wenn Felder hinzugefügt / entfernt werden - dies wird verwendet, um Angular zu zwingen, das Formular erneut zu validieren.

Ein Beispiel jsFiddle wurde gegeben: Ссылка

In Vorlage:

%Vor%

Im Controller:

%Vor%     
Alex Osborn 04.03.2013, 00:36
quelle