AngularJS: Appel de la ng-présenter l'événement à l'extérieur de la forme
Je suis un poisson dans AngularJS et j'ai ce scénario.
<form>
<input type="text">
</form>
<button type="submit">submit</button>
Normal AngularJS fournit la ng-soumettre la directive de travailler comme un attribut de la forme, mais j'ai besoin de l'appeler à l'extérieur.
Donc, quelqu'un a rencontré le même problème? Si oui, qu'avez-vous fait?
- J'essaie de rester comme un homme lorsque l'on travaille dans Angulaire, il peut être beaucoup plus avantageux
Vous devez vous connecter pour publier un commentaire.
Veuillez entourer votre code avec un ng-controller, et l'utilisation ng-cliquez sur les boutons les hors de portée des <form>.
Je fais un échantillon sur jsfiddle pour vous... l'essayer:
http://jsfiddle.net/xKkvj/2/
avec js:
<form name="myForm" ng-submit="submit(myform)">
Utiliser HTML5
form
attribut, voici un échantillon:JS:
CSS:
HTML:
<button type="submit" form="myform">Save</button>
C'est de loin la solution la plus propre que j'ai trouvé, tous les crédits vont à @Offereins https://stackoverflow.com/a/23456905/3819736
Cette méthode ne nécessite pas de contrôleur supplémentaire JS ou autre jQuery tweaks.
form=
attribut, comme répondu dans stackoverflow.com/a/28432268/3150057 qui certainement ne fonctionne pas dans IE/Edge. Cette réponse, cependant, est sur lefor=
attribut, ce qui est très commun dans le html =)Angulaire 2
Pour ceux qui cherchent à atteindre le même Angulaire 2, ngForm expose un événement émetteur que vous pouvez utiliser.
https://angular.io/api/forms/NgForm
Vous pouvez également effectuer la même émission depuis l'intérieur de votre composant ts/fichier js
Voici mon code de test. Le contrôleur qui dispose de la méthode de login est déjà appelé!
submit inside
semble fonctionner.Tous d'excellentes réponses, mais le super-solution, avec toutes vos options énoncées:
http://plnkr.co/edit/VWH1gVXjP2W9T9esnVZP?p=preview
et l'extension @m-k et le peignage des idées de @joaozito-polo:
Réponse courte Regardez http://jsfiddle.net/84bodm5p/
Moyen le plus facile pour moi de créer directive spéciale pour l'extérieur la soumission.
Important utilisez uniquement le droit d'événement .triggerHandler('submit') sur l'élément de formulaire
Regarde ma réponse ici Comment déclencher soumettre le formulaire par programmation dans AngularJS?
Si vous êtes à la recherche d'une poignée de soumis état de la forme:
En fonction de ng-cliquez sur juste ajouter la vm.nom du formulaire.$setSubmitted();
Il y a une solution qui fonctionne pour moi:
http://jsbin.com/ODaFaGU/3/edit
Découvrez la PARTIE 2 et PARTIE 3.
Il y a deux solutions à l'intérieur.
Un pour la forme régulière soumettre les boutons, il vous permet de vous appuyez sur les boutons sans retard, mais assure également que l'appui sur la touche "entrée" dans l'un des champs du formulaire de déclencher une soumettre.
Deuxièmement, il y a un supplément de gestionnaire d'événements qui combine le clic, appuyez sur et keydown[enter] événements en un seul - ce qui garantit que vous pouvez frapper vos commandes avec le clavier, comme avec un clic sur le bureau, et un tap sur le mobile(sans toucher le cliquez deux fois) les appareils.
Si vous avez des problèmes avec cela, donnez-moi un commentaire, je vais le corriger.
Angulaire de ne pas soumettre les formulaires (à tout le moins dans l'angle de la voie). Vous avez juste besoin d'une fonction qui va faire ce que vous voulez faire quand vous remplissez le formulaire.
Suffit d'appeler cette fonction dans votre
<button>
et vous êtes prêt à aller.Exemple: plunker