我的控制器中有一个表单。我希望能够根据此表单的有效性设置范围变量。我已经给了这个名字:
<div ng-controller="myCtrl">
...
<form name='myForm'>
...
</form>
...
</div>
并在该表单的$ valid属性上创建了一个$ watch(它位于包含此表单的控制器中):
$scope.$watch('myForm.$valid', function(oldVal, newVal) {
console.log("Woo! This might be working!");
if (newVal) {
$scope.otherVar = true;
} else {
$scope.otherVar = false;
}
}
我的日志声明仅在页面加载时出现,但在表单的有效性发生变化时则不会出现。 (我已通过插入以下内容验证表单的$ valid属性正在更改:
{{myForm。$ valid}}
在我的表格范围内)
我一直在环顾四周,从我所看到的应该开始工作。 (显然有些事情是错的......)
答案 0 :(得分:0)
我认为您的问题function(oldVal, newVal)
应为function(newVal, oldVal)
。
除此之外,我无法在您的代码中发现任何错误。
这是一个有效的例子:http://plnkr.co/edit/ur42HFcVQbpTEBkRBtdY?p=preview
除此之外,您的代码中可能还有其他影响表单的内容,您是不是将其嵌套在ng-if
或ng-view
之类的内容中?