将表单传递给控制器​​后,如何在角度控制器中将必填字段设置为不要求

时间:2019-05-17 07:32:13

标签: html angularjs forms

根据我设置的条件,我在ng-required="valid"方法中从click事件传递表单(例如:saveData(form))后,在控制器中将true设置为saveData()在html中$scope.valid= false,并需要检查form.$valid

但是设置$scope.valid = false并不会修改我最初已设置为ng-required的表单true属性。

<form name="customForm" noValidate>
    <input type="text" ng-required="valid"/>
    <button ng-click ="saveData(customForm)"></button>
</form>

在控制器中

$scope.valid = true;

$scope.saveData = function(form){
  $scope.valid = false;
  if(form.$valid){
   // ng-required values set to false and take action
  }
}

1 个答案:

答案 0 :(得分:0)

您不需要将'customForm'传递给函数。只需在控制器中声明即可。 我也不明白为什么需要“有效”变量。 检查工作样本:

<div ng-app="myApp" ng-controller="addCtrl">
    <form id="extra-pin" ng-submit="saveData()" name="customForm">
        <input type="text" ng-required="valid" name="test" id="test" 
                    ng-model="test"/>
        <button type="submit">Submit</button>
    </form>
</div>
angular.module('myApp', []).controller('addCtrl', ['$scope' ,function($scope) {
    console.log($scope.customForm);

    $scope.customForm = null;
    $scope.valid = true;

    $scope.saveData = function(){
        //$scope.valid = false;
        //console.log($scope.customForm);

        if($scope.customForm.$valid){
        console.log($scope.customForm);
           // // ng-required values set to false and take action
        }
    }
}]);

link to Fiddle