我已经看过以下内容:Reset Form in AngularJS和Angular clear subform data and reset validation,我试图创建一个动态表单重置/清除功能,如下所示:
$scope.clearSection = function(formName){
$scope.formName.$setPristine();
$scope.formName.$setUntouched();
};
是否可以在角度中创建一个动态清除函数,其中表单名称动态传递给此函数?
答案 0 :(得分:5)
示例plunkr:http://plnkr.co/edit/lnGym0vKsANL6oks30RG
$scope.resetForm = function(formName) {
var form = $scope[formName];
form.$setUntouched();
form.$setPristine();
}
注意:您仍需要重置输入值!
根据文件:
https://docs.angularjs.org/api/ng/type/form.FormController
<强> $ setPristine(); 强> 将表单设置为其原始状态。
可以调用此方法来删除&#39; ng-dirty&#39;上课并设置 形成其原始状态(ng-pristine类)。这种方法也会 传播到此表单中包含的所有控件。
在我们需要时,将表单设置回原始状态通常很有用 重用&#39;保存或重置后的表单。
<强> $ setUntouched()强>;将表单设置为未触摸状态。
可以调用此方法来删除“触摸”&#39;上课并设置 将控制形式控制到未触及的状态(ng-untouched class)。
将表单控件设置回其未触摸状态通常很有用 将表格设置回原始状态时。
$ setPristine和$ setUntouched只更改表单控件的类,而不是值。这意味着您仍然需要重置值。
答案 1 :(得分:3)
我不明白为什么不。
$scope.clearSection = function(formName){
var frm = $scope[formName];
frm.$setPristine();
frm.$setUntouched();
};
答案 2 :(得分:1)
是的。
在JavaScript中,您可以使用[]
表示法访问对象的变量。采取以下示例
var str = 'hello';
var obj = { hello: 'a' };
console.info(obj[str]); // outputs 'a'
因此,如果formName是一个字符串,您可以使用
简单地获取范围的属性var form = $scope[formName]