从控制器观察表单有效性

时间:2014-07-30 02:31:39

标签: angularjs angularjs-scope

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

<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}}

在我的表格范围内)

我一直在环顾四周,从我所看到的应该开始工作。 (显然有些事情是错的......)

1 个答案:

答案 0 :(得分:0)

我认为您的问题function(oldVal, newVal)应为function(newVal, oldVal)。 除此之外,我无法在您的代码中发现任何错误。 这是一个有效的例子:http://plnkr.co/edit/ur42HFcVQbpTEBkRBtdY?p=preview

除此之外,您的代码中可能还有其他影响表单的内容,您是不是将其嵌套在ng-ifng-view之类的内容中?