我正在尝试设置验证令牌" 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>
答案 0 :(得分:6)
在表单控制器上定义的$setValidity
函数,根据源代码采用三个参数:
form.$setValidity = function(validationToken, isValid, control) {
另外,为了验证失败,您需要将值设置为false
而不是true
。将表达式更改为
$scope.form.$setValidity("fooname",true,$scope.form);
$error
的{{1}}也会返回未通过验证的控制器列表,因此您需要相应地调整代码。