Angular Pristine Form vs Dirty Form for new Search

时间:2015-04-21 16:51:11

标签: javascript json angularjs angularjs-ng-click

我正在创建一个可点击的表单,根据'td'行JSON的数据填充另一个表单。表单周一和周二需要两个输入。我使用原始重置(清除)表单,并且工作正常。我无法在第二次搜索时清除表单。示例:键入星期一,单击搜索,单击星期一,现在键入星期二...当我单击搜索时,我希望删除星期一的信息。我该怎么做呢? Fiddle

 Reset Function: 
 var clearResults = angular.copy($scope.results);
 var clearRowItems = angular.copy($scope.rowItems);

 $scope.reset = function ()
 {
  $scope.enteredValue = '';
  $scope.results = '';

  $scope.results = angular.copy(clearResults);
  $scope.rowItems = angular.copy(clearRowItems);
  $scope.personForm.$setPristine();
 };

3 个答案:

答案 0 :(得分:0)

添加

$scope.enteredValue = '';

clickButton函数的底部。

http://jsfiddle.net/e5u1jz6b/

因此,一旦clickButton函数执行其操作,上面的代码将清除视图中的搜索字段(在这种情况下,将其设置为空字符串)。

这有两种方式 - 当您在表单中键入内容时,它会更改enteredValue的值,但是 - 如果更改控制器中的enteredValue,它将在视图中自动更新。

它被称为双向数据绑定: https://docs.angularjs.org/tutorial/step_04

答案 1 :(得分:0)

当您进行搜索时,您只会将更多项目推送到结果数组中。您没有清除之前的结果数组,所以每次点击搜索时,它都会不断添加到'结果'

一个简单的解决方案就是重置'结果'到一个空数组,以清除它在“点击”按钮的顶部。功能

答案 2 :(得分:0)

如果我正确理解您的问题,调用.reset()将清除给定方案的先前值:

  

示例:键入星期一,单击搜索,单击星期一,现在键入星期二...当我单击搜索时,我希望删除星期一的信息。

$scope.clickButton = function (enteredValue) {
  // clear previous values 'Monday' information 
  // from above scenario'
  $scope.reset(); 
  $scope.items = $scope.stuff;
  .
  .
}

希望这有帮助。