每当我的表单中的任何非只读输入发生变化并且表单有效时,我都想执行某些操作。比方说,我的表格看起来像
<form name="form" novalidate>
<input ng-model='input.a' required/>
<input ng-model='input.b' required/>
<input value='{{output.p | number: 2}}' readonly/>
<input value='{{output.q | number: 2}}' readonly/>
</form>
现在,当 input
发生任何变化时,只要 input.a
和 input.b
有效,我就想做点什么。我尝试了 $watch(input)
,但没有成功。看着它的所有成员都这样做,但感觉很愚蠢。将 ng-change
添加到所有字段感觉更好,但仍然很愚蠢(非 DRY)。什么是正确的方法?
另一个问题是如何确定输入是否有效。如果我有一个按钮,我可以简单地做
<button ng-click="doIt()" ng-disabled="form.$invalid">
但是如何在 Controller 中访问 form.$invalid
(它不包含在 $scope
中)?
最佳答案
你应该能够访问 form.$invalid
做
$scope.form.$invalid
参见此处:AngularJs can't access form object in controller ($scope)
要观察表单的变化,您应该能够做到:
$scope.$watchCollection('input')
关于javascript - angularjs 中的表单更改和有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22695446/