题
我在我的控制器内有一个表单。我希望能够根据此表单的有效性设置范围变量。我已经给表格起了个名字:
<div ng-controller="myCtrl">
...
<form name='myForm'>
...
</form>
...
</div>
并在该表单的valid valid属性上创建了一个watch 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属性正在更改:
{我的格式。$有效}}
我形式的范围内)我一直在环顾四周,从我所看到的 应该 工作吧。(显然有些不对劲。..)
解决方案
我想你的问题是 function(oldVal, newVal)
应该是 function(newVal, oldVal)
.除此之外,我在你的代码中找不到任何错误。这是一个有效的plunkr示例: http://plnkr.co/edit/ur42HFcVQbpTEBkRBtdY?p=preview
除此之外,它可能是你的代码中影响表单的其他东西,你没有它嵌套在像 ng-if
或 ng-view
?
不隶属于 StackOverflow