AngularJS强制验证或等待$scope.myForm.$有效刷新

前端之家收集整理的这篇文章主要介绍了AngularJS强制验证或等待$scope.myForm.$有效刷新前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我更新了我的 Javascript中的$scope,我想知道表单现在是否有效.如何强制进行验证或等待Angular运行验证?

这是一些示例代码.当我单击按钮时,$scope.validateA = true会使表单无效,但不会立即生效.所以在下一行代码中,如果我查看$scope.abForm.$valid,它仍然是真的.

var validationApp = angular.module('validationApp',[]);

validationApp.controller('mainController',function($scope) {
  $scope.submitA = function() {
    $scope.validateA = true;
    //force validation to run here??
    alert($scope.abForm.$valid);
  };
});


<div ng-app="validationApp" ng-controller="mainController">
    <form name="abForm">
      a
      <input ng-required='validateA' ng-model='a'>
      <button type="button" ng-click="submitA()">submit a</button>
    </form>
</div>

See the sample in Plunker

解决方法

你是对的,Angular还没有$消化表单中的更改,以便设置表单的有效/无效属性.

您需要等待下一个$digest周期.你不能强迫它,但是你可以等待它,如果你在没有等待时间的情况下使用$timeout,你可以强制你的警报语句等待下一个$digest周期,表格的任何输入都将被验证.

http://plnkr.co/edit/mjPuDPhS8bnbN15lO7yF?p=preview

我把它添加到你的plunker:

validationApp.controller('mainController',function($scope,$timeout){
    $scope.submitA = function(){
        $scope.validateA = true
        $timeout(function(){
            alert($scope.abForm.$valid);
        });
    };
});

猜你在找的Angularjs相关文章