2015-06-26 104 views
0

当我运行下面的代码来重置我的形式我得到一个错误:

$scope.saveFormData = function() { 
      $scope.testForm.$setPristine(); 
} 

和HTML:

<form name="testForm" > 

       <label class="item item-input item-stacked-label"> 
        <span class="input-label">Title</span> 
        <input type="text" ng-model="formData.shortDesc" required=""> 
       </label> 
<button class="button button-block button-positive" type="submit" ng-click="saveFormData()" >Opslaan </button> 

</form> 
+0

也许你应该补充一点,你的错误信息获得。 –

+0

这里是:无法读取未定义的属性'$ setPristine' –

+1

错误是说它无法找到应该在属性名称testForm下的作用域的Angular FormController。发生这种情况的一种方法是使用一个指令来创建另一个范围,如(ng-if,ng-include等)。如果您仍然需要解决错误,您可能会向我们展示更多HTML(从控制器指定的位置开始)。 –

回答

2

它工作正常,在这里是JSFiddle,尝试,如果形态存在添加的条件,但我不知道你会得到什么错误:

function MyCtrl($scope) { 
    $scope.saveFormData = function() { 
     if ($scope.testForm) { 
      $scope.testForm.$setPristine(); 
      $scope.formData = {}; 
     } 
    }; 
} 
+0

非常感谢。我的目标是清除文本字段。或者我使用了错误的功能? –

+1

@EdzoBlaauw你正在使用错误的函数:)'$ setPristine()'重置表单验证错误以及表单是否“脏”。要清除文本字段,应该将模型设置为空字符串或null。 –

+1

也可以将saveFormData()函数调用放在窗体上。 它会同时做表单提交和点击操作。