Javascript 没有表单名称时如何清除AngularJS中的表单

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

我想在Angular中使用$setPristine()和$setUntouched()函数来清除表单字段。然而,它们似乎只适用于有名称的表单。如果我有一个没有名字的表单,只有一个简单的提交函数呢

我在这里阅读了文档:

这不起作用:

    $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 = {};
  };

});