AngularJS: ottenere i valori dei form

AngularJS: ottenere i valori dei form

Ottenere i valori dei form con AngularJS è estremamente semplice grazie al data binding.

Se usate jQuery sapete che i valori dei campi possono essere intercettati solo al momento dell'invio del form tramite il metodo .serialize() o singolarmente tramite il metodo .val().

In Angular invece il data binding ci consente di leggere e aggiornare i valori in tempo reale: grazie alla direttiva ng-model ciascun valore diviene il valore di una proprietà dello scope del controller che gestisce il form o la view corrente.

Se definiamo il seguente controller:


var app = angular.module('MyApp', []);

app.controller('FormCtrl', ['$scope', function($scope) {
	$scope.formData = {}; // Qui i valori dei campi
	$scope.submitted = false;
	$scope.output = '';

	$scope.submit = function() {
		$scope.output = JSON.stringify($scope.formData);
		$scope.submitted = true;
	};
}])

Possiamo legare (binding) i valori dei campi all'oggetto formData in questo modo:


<body ng-app="MyApp">
<form novalidate method="post" ng-controller="FormCtrl" ng-submit="submit()">
     <p>
         <input type="text" class="form-control" name="nome" placeholder="Nome" ng-model="formData.firstname" />
     </p>
      <p>
         <input type="text" class="form-control" name="cognome" placeholder="Cognome" ng-model="formData.lastname" />
     </p>
      <p>
         <input type="text" class="form-control" name="email" placeholder="E-mail" ng-model="formData.email" />
     </p>
     <p><input type="submit" class="btn btn-primary" value="Invia" /></p>

	  <p><code>{{formData}}</code></p>
	  <pre ng-show="submitted">
		 {{output}}
	  </pre>
</form>	
</body>

Le proprietà firstname, lastname e email verrano create automaticamente e aggiornate man mano che l'utente interagisce con il form. Non c'è più bisogno di usare il DOM come in jQuery.

Torna su