在 Angularjs 中提交后重置表单

IT技术 javascript angularjs angularjs-directive
2021-03-14 10:36:49

嗨,我有一个表单,可以在单击按钮时进行更新。

 $scope.action = "Update";
  var id = $routeParams.editId;
  scope.item = updateRecord.get({ id: id });

项目更新后,它不会删除表单字段中输入的信息。我想知道 angularjs 中有什么可用在 udpating 之后添加到上面的代码中,以便它也清除形成。谢谢

5个回答

您可以通过重置表单,$scope.formName.$setPristine();但是如果您将模型对象绑定到您的输入,您也需要注意清除它们,即:

$scope.currentRecord={};

编辑

正如 ToodoN-Mike 指出的那样,不要忘记设置

$scope.formName.$setUntouched()

$touched标志是在 angular 1.3 中引入的。

不要忘记使用 $scope.formName.$setUntouched() -> $touched 标志是在 angular 1.3 中引入的
2021-04-23 10:36:49
@MohammadFareedcurrentRecord只是作为一个例子来引用当前的表单模型,它不是一个真实的对象$scope
2021-04-29 10:36:49
使用$scope.currentRecord={};错误的方法清除表单,尝试使用空的方法重置字段工作正常。
2021-05-03 10:36:49

在提交函数主体的底部运行下面的代码。

// Reset the form model.
vm.project = {};
// Set back to pristine.
vm.form.$setPristine();
// Since Angular 1.3, set back to untouched state.
vm.form.$setUntouched();

“vm.form”是我的表单名称。

有关更多信息,请查看此文档页面:https : //docs.angularjs.org/api/ng/type/form.FormController

你能告诉我为什么这种方法不适用于这种方法,即我在控制器中使用它而不是 $scope。
2021-05-07 10:36:49
只是为了澄清。如果您的控制器作为别名(强烈推荐与 vm 一起使用),您可以设置一个类似于name='vm.form'表单元素的属性然后将向您当前的范围(即 vm)​​公开一个对象。您接下来要做的就是重置pristinetouched值并重置ng-model您的输入。
2021-05-10 10:36:49

这对我有用。

viewModel.data = {};
$scope.formName.$setUntouched();
$scope.formName.$setPristine();

1) 要删除表单字段中的值并重置您可以使用$setPristine();

$scope.formName.$setPristine();

2) 接下来,也可以使用$setUntouched()将表单设置为 Untouched状态

(如果您的表单字段中必填字段,并且如果您使用的是ng-messages,那么如果您不使用以下功能,这些字段将显示错误。)

$scope.formName.$setUntouched();

我不明白这个问题,但也许你可以清理 Html 组件中的表单:

函数:ngSubmit(),发送数据。taskName 是字段的名称,也是 taskBody。

<form (ngSubmit)="onSubmit(taskName.value, taskBody.value); taskName.value=''; taskBody.value=''" #taskForm="ngForm">