在我的控制器中,我只想在表单有效时调用一个动作(比如在Tab按下)。我还需要在表单成功提交后立即清除表单。我有类似的东西
app.controller('CommentFormController', function($scope) {
$scope.submit = function() {
if($scope.commentForm.$valid) {
// submit form
$scope.comment = '';
$scope.commentForm.$setPristine();
}
}
});
我想对此进行测试,但看起来我必须手动创建此$scope.contactForm
并删除$setPristine()
函数。
还有其他方法可以测试吗?我的意思是我可以以某种方式在我的测试中获得基础FormController
的实例吗?
你如何处理这类案件?
答案 0 :(得分:1)
将表单设置为pristine将影响表单的状态,但不会将表单重置为默认值(如果您已提供)。相反,您可以使用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。谷歌很可能会尽快推出这样的方法。希望这会有所帮助。
答案 1 :(得分:0)
@grafthez我尝试通过$ scope.myForm验证表单在我的控制器中是否有效时遇到同样的问题。$ valid。
我在https://stackoverflow.com/a/17129354找到了一个解决方案。你可以尝试注入$ compile然后$ compile(yourFormTemplate)($ scope)。