无法在表单上设置有效性

Cyr*_*ril 1 angularjs angularjs-scope

我试图通过其控制器为一个表单设置一个验证令牌"fooname",点击一个基于条件的按钮.

但它看起来像form.$ error.fooname没有设置.{{form.$ error.fooname}}被解析为null.

JavaScript的:

angular.module('app', [])
.controller('controller', ['$scope', function ($scope) {
    $scope.data={};
    $scope.data.validate=function () {
        if ($scope.data.name=="foo") {
            $scope.form.$setValidity("fooname",true);
        }
    };
}]);
Run Code Online (Sandbox Code Playgroud)

HTML:

<form name="form" ng-controller="controller" 
ng-submit="data.validate()" ng-init="form.$setValidity('fooname',false)" 
novalidate>
    <input type="text" ng-model="data.name" name="name"/>
    <button type="submit">Submit</button><br/>
    {{data}}<br/>
    {{form.$error.fooname}}
</form>
Run Code Online (Sandbox Code Playgroud)

Cha*_*ani 6

$setValidity在表单控制器上定义的函数,根据源代码获取三个参数:

form.$setValidity = function(validationToken, isValid, control) {

另外,为了验证失败,您需要将值设置为falsenot true.将表达式更改为

$scope.form.$setValidity("fooname",true,$scope.form);

此外,$errorfor FormController返回未通过验证的控制器列表,因此您需要相应地调整代码.