在我的 Controller 中,我只想在表单有效时调用一个 Action (比如按 Tab 键)。我还需要在成功提交表单后立即清除表单。我有这样的东西
app.controller('CommentFormController', function($scope) {
$scope.submit = function() {
if($scope.commentForm.$valid) {
// submit form
$scope.comment = '';
$scope.commentForm.$setPristine();
}
}
});
我想对此进行测试,但看起来我必须手动创建此 $scope.contactForm
并 stub $setPristine()
函数。
还有其他方法可以测试吗?我的意思是我能以某种方式在我的测试中获取底层 FormController
的实例吗?
你如何处理这种情况?
最佳答案
将表单设置为 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。谷歌可能很快就会想出办法来做到这一点。希望这会有所帮助。
关于javascript - AngularJS 中依赖表单验证的单元测试 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19156613/