gpt4 book ai didi

javascript - Angularjs 表单重置

转载 作者:可可西里 更新时间:2023-11-01 02:01:59 25 4
gpt4 key购买 nike

我有一个 Angular 重置功能来清除表单中的所有字段。如果我做类似的事情:

<a href="#" ng-click="resetForm()">reset</a>

$scope.resetForm = function() {
$scope.someForm = {};
}

一切正常。但我想将此功能用于网站上的多个表单。如果我像这样传递表单对象:

<a href="#" ng-click="resetForm(someForm)">reset</a>

$scope.resetForm = function(form) {
$scope.form = {};
}

那就不行了。有人可以向我解释为什么会发生这种情况吗?

最佳答案

你有两个问题:

  • 您没有访问传入的变量,仍然访问someForm当前范围。
  • 当您将参数传递给函数时,它是通过引用传递的。即使您使用 form = {} ,它不起作用,因为它只更改参数的引用,而不是传入的引用 someForm .

尝试:

$scope.resetForm = function(form) {
//Even when you use form = {} it does not work
form.fieldA = null;
form.fieldB = null;
///more fields
}

或者

$scope.resetForm = function(form) {
//Even when you use form = {} it does not work
angular.copy({},form);
}

代替:

$scope.resetForm = function(form) {
$scope.form = {};
}

在你的笨拙中,我看到你没有将 View 与模型分开。您应该这样做是为了分离关注点,并避免在清除所有字段(包括 DOM 表单对象的字段)时可能发生的问题。

<form name="form2" ng-controller="SecondController">
<label for="first_field">First Field</label>
<input ng-model="form2Model.first_field" />
<br />
<label for="second_field">Second Field</label>
<input ng-model="form2Model.second_field" />
<br />

<a href="#" ng-click="secondReset(form2Model)">Reset the form</a>
</form>

http://plnkr.co/edit/x4JAeXra1bP4cQjIBld0?p=preview

关于javascript - Angularjs 表单重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20865125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com