2014-05-08 5 views
37

In angularjs frage ich mich, was die Unterschiede zwischen ng-submit und ng-Klick sind? Konkret Vor-und Nachteile von jedem und wann sollten Sie das eine oder andere? Vielen Dank! ** EDIT **
Ich habe in diesem ein bisschen mehr geschaut, aber ich frage mich immer noch, was (wenn überhaupt) der Vorteil ist mit ng-submit? Könnten Sie einen ng-klick anstelle aller ng-submits verwenden? Würde dies zu Problemen führen? Danke noch einmal!Unterschiede zwischen ng-submit und ng-click

+6

Beide sind nur Wrapper um die nativen Browserereignisse. – dnc253

+0

Hier ist ein interessanter Beitrag, der wahrscheinlich helfen wird, dieses Problem zu entmystifizieren http://bit.ly/1TUTAAz – Grateful

Antwort

38

Die ngSubmit-Direktive bindet an die submit event im Browser, der ausgelöst wird, wenn ein Formular gesendet wird.

Von MDN:

Beachten Sie, dass nur auf das Formularelement gebrannt besteht, erfolgt, nicht die Taste oder Eingabe einreichen. (Formulare werden gesendet, keine Schaltflächen.)

Sie können damit ein Benutzeranmeldungsformular oder etwas Ähnliches senden.

Auf der anderen Seite kann die ngClick-Direktive für jede Art von Element gelten.

Von source:

Die ngClick Direktive erlaubt Ihnen individuelle Verhalten angeben, wenn ein Element geklickt wird.

Verwenden Sie diese Option, damit Ihr Benutzer auf andere Weise als mit dem Senden eines Formulars mit Ihrer Seite interagieren kann. Vielleicht, um auf einen "vorherigen" oder "nächsten" Pager-Knopf oder vielleicht eine Karte oder etwas zu klicken.

3

ng-send mit Formularen verknüpft, wird dieses Ereignis ausgelöst, wenn Sie das Formular senden. Wo als ng-click kann ohne Formular funktionieren senden Ereignis

23

Angular verhindert, dass die Standardaktion (Formularübermittlung an den Server), wenn nicht das Element Aktion, Daten-action oder x-action specified.So Attribute, wenn sie mit diesen Formen ohne atributes ng Winkel Verwendung -click und ng-submit kann verwendet werden, um anzugeben, welche Javascript-Methode aufgerufen werden soll.In jedem Aufruf können Sie alle Eingabewerte in einem Bereich abrufen, da die bidirektionale Datenbindungseigenschaft angular ist. Könnten Sie einen ng-Klick anstelle aller ng-Submits verwenden? Würde dies zu Problemen führen?
Es kann verwendet werden, aber wenn Sie ng-click verwenden, werden HTML-Eingabeattribute (wie erforderlich, min-max, maxlength) nicht berücksichtigt und der Methodenkörper sofort ausgeführt.

+2

Danke, das beseitigt das Missverständnis. Um Formulare abschicken zu können, wird bevorzugt ng-submit verwendet. Für andere Interaktionen ist ng-click zu verwenden. –

+0

'bei der Verwendung von ng-click werden HTML-Eingabeattribute (wie erforderlich, min-max, maxlength) nicht berücksichtigt und der Methodenkörper wird sofort ausgeführt ............ +1 zur Entmystifizierung! – TheCrazyProgrammer

15

Mein Lieblingsgrund für die Verwendung von ng-submit ist, dass Sie die Taste <Enter> drücken können, während Sie auf einen Formulareingang usw. fokussiert sind und das Formular abschickt. (Vorausgesetzt natürlich, dass Sie haben einen Knopf von type="submit" in Form.)

Seine mehr Tastatur freundlich und Zugänglichkeit freundlicher als ng-click mit auf eine Schaltfläche, denn mit ng-submit kann ein Benutzer auf den Absenden-Button klicken oder sie können drücken <Enter>.

+0

Ich habe gerade dies getestet, und es scheint, dass die Funktion durch Drücken der Eingabetaste in beide Richtungen ausgeführt wird. Ich dachte, das wäre auch ein Vorteil von ngSubmit, aber von meinem Test scheint er jetzt genauso zu handeln. – bobbyz

+0

Verzeihen Sie, aber ich verstehe nicht, wie die Funktion ausgeführt werden kann, ohne 'ng-submit' zu haben. Durch das Platzieren des Attributs 'ng-submit' in dem Formular können Sie die auszuführende Funktion definieren, wenn die Taste ' 'gedrückt wird, während Sie sich auf eines der Elemente des Formulars konzentrieren. Wie sonst würden Sie eine Funktion definieren, die auf '' läuft, wenn Sie kein 'ng-submit' haben? –

+0

Wenn Sie den Knopf "Type" zum Senden ändern, macht es das Gleiche (<= Horrble chrome auto correct.) ... – TGarrett

4

Wenn wir die Form wollen nicht vorgelegt werden, wenn es ungültig ist, dann anstelle von ng-Klick auf den Button, werden wir ng einreichen Richtlinie über die Form selbst

<div class="row"> 
     <form name="adduser" ng-submit="AddUser(adduser.$valid)">     
      <div id="name-group" class="form-group-lg"> 
       <input type="text" 
         required 
         name="name" 
         ng-model="userfullName" 
         class="form-control" 
         placeholder="Full Name"> 
      </div> 

Im ng- verwenden Senden wir rufen eine Funktion AddUser vom Controller mit einem Parameter formname. $ valid. Diese Submit-Funktion wird nur aufgerufen, wenn das Formular gültig ist oder alle Benutzereingaben des Formulars gültig sind. Beachten Sie, dass in diesem Fall von nicht gesendet werden würde, wenn das Formular nicht gültig ist

Wenn wir ng-klicken, wird das Formular gesendet, auch wenn es ungültig ist. Zwei Beobachtungen für ng-Klick sind wie folgt:

Wir konnten das Formular abzuschicken, selbst wenn Form Für die ungültigen Eingaben nicht gültig war, wurde der Wert auf undefiniert in der Steuerung

Verwandte Themen