【发布时间】:2015-05-27 11:58:36
【问题描述】:
验证在我的 formRow 指令中不起作用。我在指令中放置了一个带有字段名称的 ng-form,但不会触发 [[ field ]].$invalid 例如。有人知道为什么吗?
指令:
<li class="form__row" ng-form="[[ field ]]">
<div class="label">
<label ng-class="{ 'required' : required == 'true' }" for="frm-[[ field ]]">[[ label ]]</label>
</div>
<div class="field" ng-switch="required" ng-class="{ 'field--invalid' : [[ field ]].$touched && [[ field ]].$invalid, 'field--valid': [[ field ]].$touched && [[ field ]].$valid }">
<input ng-switch-when="true" type="[[ type ]]" name="[[ field ]]" id="frm-[[ field ]]" ng-model="record[ field ]" required>
<input ng-switch-default type="[[ type ]]" name="[[ field ]]" id="frm-[[ field ]]" ng-model="record[ field ]" >
</div>
Directive.js
.directive('formRow', function () {
return {
restrict: 'EA',
templateUrl: FW.Config.submap + 'angular/_directives/formRow.html',
replace: true,
scope: {
record: '=',
type: '@',
field: '@',
label: '@',
required: '@'
},
link: function($scope, element, attr) {
// Wordt gezet bij form submit
$scope.$on('record:invalid', function() {
$scope[$scope.field].$setTouched;
});
}
}
})
从模板调用:
<form name="formData" ng-submit="submit($event)" class="form--wide frm-login" novalidate>
<ul>
<form-row record="inloggen" field="emailadres" label="E-mailadres" type="email" required="true"></form-row>
<form-row record="inloggen" field="wachtwoord" label="Wachtwoord" type="password" required="true"></form-row>
</ul>
顺便说一句:我使用方括号作为 $interpolateProvider 符号,因为在我的模板中也使用了 twig。
【问题讨论】:
标签: angularjs validation angularjs-directive