我试图在没有任何提交的情况下实现自动表单验证。出于这个原因,我在表单中添加了$ watch。
$scope.$watch('myForm.$valid', function(newVal, oldVal) {
console.log('watching....');
/*
If valid
perform action
*/
});
我的表单结构是:
<ul ng-controller="Ctrl">
<li ng-repeat='user in userList track by $index'>
<p>
User {{$index+1}}: {{user.userType}} <br/>
Designation: {{user.designation}}
</p>
<form name="myForm" class="my-form">
<label>Age?:</label>
<input name="userAge" type="number" ng-model="user.age" required/>
</form>
</li>
<button style="margin-top:20px;" type="button" ng-click="addUser()">Add more user</button>
</ul>
我可以点击Add more user
按钮创建多个表单。我的表单位于userList
:
$scope.userList = [
{
userType: 'Doctor',
designation: 'Sr. cardiologist'
}
]
问题
如果表单有效/无效,我无法在我的观察者中打印console.log()
。它仅在页面加载期间打印。但是如果我对表单进行了任何更改,它就不会显示任何控制台打印。
但如果我将表格保留在ng-repeat范围之外,它就可以了。它根据有效性打印控制台项目。
**那么为什么它不能在ng-repeat中工作?**如何检查我创建的表单是否有效。我能做些什么才能让它发挥作用? 任何建议或示例将不胜感激