8

在我的控制器中,我只想在表单有效时调用一个动作(比如按 Tab 键)。我还需要在成功提交表单后立即清除表单。我有这样的东西

app.controller('CommentFormController', function($scope) {
  $scope.submit = function() {
    if($scope.commentForm.$valid) {
      // submit form
      $scope.comment = '';
      $scope.commentForm.$setPristine();
    }
  }
});

我想对此进行测试,但看起来我必须$scope.contactForm手动创建它并存根$setPristine()函数。

有没有其他方法可以测试它?FormController我的意思是我可以在我的测试中以某种方式获得底层实例吗?

您如何处理此类案件?

4

2 回答 2

1

将表单设置为原始会影响表单的状态,但不会将表单重置为您的默认值(如果您提供了它们)。相反,您可以使用 DOM 元素方法 reset()。

像这样的东西:

document.getElementById("yourform").reset();

或者,由于 angularJS 和 jQuery 可以很好地发挥作用,您可以使用 css 选择器(如果您想要一次清除多个表单,则特别有用。

所以像:

$("#yourform")[0].reset();

也有纯 javascript 方法: http ://www.javascript-coder.com/javascript-form/javascript-reset-form.phtml

--- 所以总而言之,您不需要使用特定的方法来执行此操作,只需使用 DOM 方法、jQuery 或纯 javascript。谷歌可能很快就会想出一种方法来做到这一点。希望这可以帮助。

于 2014-01-10T03:59:28.490 回答
0

@grafthez 尝试通过 $scope.myForm.$valid 验证表单在我的控制器中是否有效时遇到了同样的问题。

我在https://stackoverflow.com/a/17129354上找到了解决方案。您可以尝试注入 $compile 然后 $compile(yourFormTemplate)($scope)。

于 2014-07-07T02:41:35.037 回答