gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 22:45:57 24 4
gpt4 key购买 nike

我更新了 Javascript 中的 $scope,我想知道表单现在是否有效。如何强制进行验证或等待 Angular 运行验证?

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

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 编辑表单中的更改,以便设置表单的有效/无效属性。

您需要等待下一个$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 强制验证或等待 $scope.myForm.$valid 刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25184241/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com