I am going through learning curve with AngularJs and I am finding that there are virtually no examples that serve real world use.
I am trying to get a clear understanding of how to submit a form with the most standard components and pass it on to a PHP file..
My fiddle.
Does anyone have any good examples on submitting simple, un-polluted, forms that would help me and probably numerous other Angularjs beginners..
When I say a clean form I am referring to something like this..
<div ng-app="myApp"> <form name="saveTemplateData" action="#" ng-controller="FormCtrl" ng-submit="submitForm()"> First name: <br/><input type="text" ng-model="form.firstname"> <br/><br/> Email Address: <br/><input type="text" ng-model="form.emailaddress"> <br/><br/> <textarea rows="3" cols="25" ng-model="form.textareacontent"></textarea> <br/><br/> <input type="radio" ng-model="form.gender" value="female" />Female ... <input type="radio" ng-model="form.gender" value="male" />Male <br/> <br/><br/> <input type="checkbox" ng-model="form.member" value="5"/> Already a member <br/><br/> <input type="file" ng-model="form.file_profile" id="file_profile"><br/> <input type="file" ng-model="form.file_avatar" id="file_avatar"> <br/><br/> <!-- <button ng-click="save()" >Save</button> --> <input type="submit" ngClick="Submit" > </form> </div>
My ng-app code...
var app = angular.module('myApp', []); app.controller('FormCtrl', function ($scope, $http) { var formData = { firstname: "default", emailaddress: "default", textareacontent: "default", gender: "default", member: false, file_profile: "default", file_avatar: "default" }; $scope.save = function() { formData = $scope.form; }; $scope.submitForm = function() { console.log("posting data...."); formData = $scope.form; console.log(formData); //$http.post('form.php', JSON.stringify(data)).success(function(){/*success callback*/}); }; });
I guess three questions I have from here on are...
I am willing to take any clear and concise information and assemble a good learning example for everyone...
My fiddle
AngularJS ng-submit Directive The ng-submit directive specifies a function to run when the form is submitted. If the form does not have an action ng-submit will prevent the form from being submitted.
Create the checkout formlink html , add an HTML <form> element and a Purchase button. Use a formGroup property binding to bind checkoutForm to the HTML <form> . On the form tag, use an ngSubmit event binding to listen for the form submission and call the onSubmit() method with the checkoutForm value.
The difference is that (ngSubmit) listens to the ngSubmit event of the NgForm directive and click to the click event of the <button> element. The button in the 2nd example will cause the submit event which also causes the ngSubmit event, but because it is not listened to, it will have no effect.
$dirty means the user has changed the input value, $invalid means the address itself is invalid. Therefore the error is only shown if the user has actively changed the input value to either an empty or invalid value.
If you are looking for Angular (v2+, currently version 8), try this answer or the official guide.
I have rewritten your JS fiddle here: http://jsfiddle.net/YGQT9/
<div ng-app="myApp"> <form name="saveTemplateData" action="#" ng-controller="FormCtrl" ng-submit="submitForm()"> First name: <br/><input type="text" name="form.firstname"> <br/><br/> Email Address: <br/><input type="text" ng-model="form.emailaddress"> <br/><br/> <textarea rows="3" cols="25"> Describe your reason for submitting this form ... </textarea> <br/> <input type="radio" ng-model="form.gender" value="female" />Female <input type="radio" ng-model="form.gender" value="male" />Male <br/><br/> <input type="checkbox" ng-model="form.member" value="true"/> Already a member <input type="checkbox" ng-model="form.member" value="false"/> Not a member <br/> <input type="file" ng-model="form.file_profile" id="file_profile"> <br/> <input type="file" ng-model="form.file_avatar" id="file_avatar"> <br/><br/> <input type="submit"> </form> </div>
Here I'm using lots of angular directives(ng-controller
, ng-model
, ng-submit
) where you were using basic html form submission. Normally all alternatives to "The angular way" work, but form submission is intercepted and cancelled by Angular to allow you to manipulate the data before submission
BUT the JSFiddle won't work properly as it doesn't allow any type of ajax/http post/get so you will have to run it locally.
For general advice on angular form submission see the cookbook examples
UPDATE The cookbook is gone. Instead have a look at the 1.x guide for for form submission
The cookbook for angular has lots of sample code which will help as the docs aren't very user friendly.
Angularjs changes your entire web development process, don't try doing things the way you are used to with JQuery or regular html/js, but for everything you do take a look around for some sample code, as there is almost always an angular alternative.
Sending data to some service page.
<form class="form-horizontal" role="form" ng-submit="submit_form()"> <input type="text" name="user_id" ng-model = "formAdata.user_id"> <input type="text" id="name" name="name" ng-model = "formAdata.name"> </form> $scope.submit_form = function() { $http({ url: "http://localhost/services/test.php", method: "POST", headers: {'Content-Type': 'application/x-www-form-urlencoded'}, data: $.param($scope.formAdata) }).success(function(data, status, headers, config) { $scope.status = status; }).error(function(data, status, headers, config) { $scope.status = status; }); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With