使用をフォーム名がuであるため、名前付きフォームの場合のみFormController
のインスタンスが作成されますスコープ上の特定のフォームのFormControllerインスタンスを表すプロパティとしてsedを使用します。名前がなくても、スコープの任意のプロパティ名にFormControllerインスタンスを関連付けることはできません。次のマークアップあなたのMyControllerで
<div ng-controller="MyController">
<form name="myForm" id="myForm" ng-submit="handleSubmit()">
/* Some Markup */
</form>
</div>
与え例えば
、$scope
はFormController
インスタンスを表すmyForm
と呼ばれる性質を持って、あなたは以下のような方法やアクセスプロパティを呼び出すことができます。
$scope.myForm.$valid
$scope.myForm.$setPristine();
$scope.myForm.$setUntouched();
setPristine()
とsetUntouched()
を呼び出すと、唯一のフォームに追加されたクラスから明らかなようにdirty
からpristine
とuntouched
にフォームの状態を変更しますが、フォームフィールドをリセットしません。 FormController
に公開されている公開方法はありませんが、フォームフィールドと対応するモデル値をリセットしますが、ng-model
を使用して値をバインドする方法を少し変更するだけで簡単に実現できます。モデルでドット(。)を使用すると、単一のオブジェクト内のすべてのフォーム状態を取得できるようになり、シャドウプロパティを作成できなくなります。あなたのHTMLで
、お使いのコントローラで
<input type="text" id="fullName" name="fullname" ng-model="data.fullName"/>
<input type="email" id="email" name="email" ng-model="data.email" />
、
angular.module('MyApp', [])
.controller('MyController', function($scope) {
$scope.data = {
fullName : '',
email : ''
};
$scope.resetForm = function(){
/* reset the data to a new object so that all the properties
* of form are reset
*/
$scope.data = {};
};
});
ここでアクションのサンプルPenです。これが役に立ちますようお願いいたします:)
あなたのフォームに 'name'を追加する際に問題がありますか? Angularは、フォーム名がスコープ上の特定のフォームのFormControllerインスタンスを表すプロパティとして使用されるため、名前付きフォームのみのFormControllerのインスタンスを作成します。名前がなくても、スコープの任意のプロパティ名にFormControllerインスタンスを関連付けることはできません。 – Arkantos
ああ、ありがとうございました@Arkantos – OneMoreQuestion