AngularJSフォーム
AngularJSのフォームは、入力コントロールのデータバインディングと検証を提供します。
入力コントロール
入力コントロールはHTML入力要素です。
- 入力要素
- 要素を選択
- ボタン要素
- textarea要素
データバインディング
入力コントロールは、
ng-model
ディレクティブを使用してデータバインディングを提供します。
<input type="text" ng-model="firstname">
これで、アプリケーションには。という名前のプロパティがありますfirstname
。
ng-model
ディレクティブは、入力コントローラーをアプリケーションの残りの部分にバインドします。
プロパティfirstname
は、コントローラーで参照できます。
例
<script>
var app = angular.module('myApp', []);
app.controller('formCtrl',
function($scope) {
$scope.firstname = "John";
});
</script>
また、アプリケーションの他の場所で参照することもできます。
例
<form>
First Name: <input type="text" ng-model="firstname">
</form>
<h1>You entered: {{firstname}}</h1>
チェックボックス
チェックボックスの値はまたはtrue
ですfalse
。ng-model
ディレクティブをチェックボックスに適用し、
その値をアプリケーションで使用します。
例
チェックボックスがオンになっている場合は、ヘッダーを表示します。
<form>
Check to show a header:
<input type="checkbox" ng-model="myVar">
</form>
<h1 ng-show="myVar">My
Header</h1>
ラジオボタン
ng-model
ディレクティブを使用してラジオボタンをアプリケーションにバインドします。
同じラジオボタンのng-model
値は異なる場合がありますが、選択したものだけが使用されます。
例
選択したラジオボタンの値に基づいて、テキストを表示します。
<form>
Pick a topic:
<input type="radio" ng-model="myVar"
value="dogs">Dogs
<input type="radio" ng-model="myVar" value="tuts">Tutorials
<input type="radio" ng-model="myVar" value="cars">Cars
</form>
myVarの値は、、、または
のいずれかdogs
になります。tuts
cars
セレクトボックス
ng-model
ディレクティブを使用して、選択ボックスをアプリケーションにバインドします。
属性で定義されたプロパティにng-model
は、選択ボックスで選択されたオプションの値が含まれます。
例
選択したオプションの値に基づいて、テキストを表示します。
<form>
Select a topic:
<select ng-model="myVar">
<option value="">
<option value="dogs">Dogs
<option value="tuts">Tutorials
<option
value="cars">Cars
</select>
</form>
myVarの値は、、、または
のいずれかdogs
になります。tuts
cars
AngularJSフォームの例
form = {"firstName": "John"、 "lastName": "Doe"}
master = {"firstName": "John"、 "lastName": "Doe"}
アプリケーションコード
<div ng-app="myApp" ng-controller="formCtrl">
<form
novalidate>
First Name:<br>
<input type="text" ng-model="user.firstName"><br>
Last
Name:<br>
<input type="text" ng-model="user.lastName">
<br><br>
<button ng-click="reset()">RESET</button>
</form>
<p>form = {{ user}}</p>
<p>master = {{ master}}</p>
</div>
<script>
var app =
angular.module('myApp', []);
app.controller('formCtrl',
function($scope) {
$scope.master = {firstName: "John", lastName: "Doe"};
$scope.reset = function() {
$scope.user
= angular.copy($scope.master);
};
$scope.reset();
});
</script>
novalidate属性はHTML5の新機能です。デフォルトのブラウザ検証を無効にします。
例の説明
ng-appディレクティブ は、AngularJSアプリケーションを定義します。
ng-controllerディレクティブは、アプリケーションコントローラーを定義します 。
ng-modelディレクティブは、2つの入力要素をモデル内のユーザーオブジェクトにバインド し ます。
formCtrlコントローラーは、マスターオブジェクトに初期値を設定 し、 reset()メソッドを定義します。
reset()メソッドは、 ユーザーオブジェクトをマスターオブジェクト と同じに設定します。
ng-clickディレクティブは、ボタンがクリックされた場合にのみ、 reset () メソッドを呼び出します。
このアプリケーションにはnovalidate属性は必要ありませんが、通常はAngularJSフォームで使用して、標準のHTML5検証をオーバーライドします。