无法在表单上设置有效性

时间:2014-08-27 02:30:48

标签: 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);
        }
    };
}]);

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>

1 个答案:

答案 0 :(得分:6)

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

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

另外,为了验证失败,您需要将值设置为false而不是true。将表达式更改为

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

$error的{​​{1}}也会返回未通过验证的控制器列表,因此您需要相应地调整代码。