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ですfalseng-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になりますtutscars


セレクトボックス

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になりますtutscars


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検証をオーバーライドします。