Javascript 没有表单名称时如何清除AngularJS中的表单
我想在Angular中使用$setPristine()和$setUntouched()函数来清除表单字段。然而,它们似乎只适用于有名称的表单。如果我有一个没有名字的表单,只有一个简单的提交函数呢 我在这里阅读了文档: 这不起作用:Javascript 没有表单名称时如何清除AngularJS中的表单,javascript,angularjs,forms,angularjs-scope,Javascript,Angularjs,Forms,Angularjs Scope,我想在Angular中使用$setPristine()和$setUntouched()函数来清除表单字段。然而,它们似乎只适用于有名称的表单。如果我有一个没有名字的表单,只有一个简单的提交函数呢 我在这里阅读了文档: 这不起作用: $scope.submit = function() { // blah blah // Resets the form fields to blank // I could simply do
$scope.submit = function() {
// blah blah
// Resets the form fields to blank
// I could simply do
// $scope.field1 = '';
// $scope.field2 = '';
// But I want it to look cleaner
This.$setPristine();
This.$setUntouched();
};
用“this”代替“this”
尝试:
Angular将仅为命名表单创建
FormController
的实例,因为表单名称用作表示作用域上该特定表单的FormController实例的属性。如果没有任何名称,它将无法将FormController实例与作用域上的任何属性名称关联
例如,给定以下标记
<div ng-controller="MyController">
<form name="myForm" id="myForm" ng-submit="handleSubmit()">
/* Some Markup */
</form>
</div>
调用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" />
这是一个正在运行的示例。希望这有帮助:)在表单中添加
name
有什么问题吗?Angular将仅为命名表单创建FormController实例,因为表单名称用作表示作用域中该特定表单的FormController实例的属性。如果没有任何名称,它将无法将FormController实例与作用域上的任何属性名称相关联。啊,谢谢你,我看到@ArkantosI阅读了你从哪里得到的文章,我已经在问题中包括了这一点。我正在寻找一个更干净的解决方案这根本不是一个坏的解决方案。也许这是你唯一的解决办法如果你不想使用名字,我不知道还有什么别的办法。@OneMoreQuestion。。你可以参考我的答案来获得一个简单的解决方案。@LukasLiesis谢谢,这可能是唯一没有形式名称的解决方案。谢谢,这是我所怀疑的。谢谢你的澄清!
$scope.myForm.$valid
$scope.myForm.$setPristine();
$scope.myForm.$setUntouched();
<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 = {};
};
});