我在我的控制器内有一个表单。我希望能够根据此表单的有效性设置范围变量。我已经给表格起了个名字:

<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-ifng-view?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top