【问题标题】:Watch form validity from controller从控制器监视表单有效性
【发布时间】:2014-09-21 13:36:15
【问题描述】:

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

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

在我的表格范围内)

我一直在环顾四周,据我所见,这应该起作用。 (不过显然有些不对劲……)

【问题讨论】:

    标签: angularjs angularjs-scope


    【解决方案1】:

    我认为你的问题是function(oldVal, newVal) 应该是function(newVal, oldVal)。 除此之外,我在您的代码中找不到任何错误。 这是一个有效的 plunkr 示例:http://plnkr.co/edit/ur42HFcVQbpTEBkRBtdY?p=preview

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-04
      • 1970-01-01
      • 1970-01-01
      • 2018-11-28
      • 2014-06-11
      • 2013-05-09
      • 1970-01-01
      • 2016-08-28
      相关资源
      最近更新 更多