【发布时间】:2017-11-26 03:10:26
【问题描述】:
我有一个密码和密码确认字段,使用指令连接。除此之外,我还有在ng-invalid 时设置边框颜色的css。问题是,例如,当我首先输入confirm_password,然后在password 中输入相同时,它不会删除“ng-invalid”。编辑password时有没有办法告诉Angular更新其他字段类?
html
<div class="form-group">
<label>Adgangskode</label>
<input type="password" class="form-control" name="password"
ng-model="vm.password" ng-minlength="6" ng-maxlength="24"
placeholder="Din adgangskode"
equals="vm.confirm_password" required>
<p ng-show="SignUp.password.$invalid
&& (SignUp.password.$dirty || vm.submitted)"
class="help-block ng-binding" style="">Adgangskode er invalid.</p>
</div>
<div class="form-group">
<label>Adgangskode bekræftelse</label>
<input type="password" class="form-control" name="confirm_password"
ng-model="vm.confirm_password"
ng-minlength="6" ng-maxlength="24"
ng-model="vm.confirm_password"
placeholder="Bekræft din adgangskode"
required nx-equal="vm.password">
<p ng-show="SignUp.confirm_password.$error.nxEqual
&& (SignUp.confirm_password.$dirty || vm.submitted)"
class="help-block ng-binding">Adgangskoderne er ikke ens.</p>
</div>
css
input.ng-dirty.ng-invalid {
border-color: #a94442;
}
.ng-submitted input.ng-invalid {
border-color: #a94442;
}
指令函数
function ComparePassword() {
return {
require: 'ngModel',
link: function (scope, elem, attrs, model) {
if (!attrs.nxEqual) {
console.error('nxEqual expects a model as an argument!');
return;
}
scope.$watch(attrs.nxEqual, function (value) {
model.$setValidity('nxEqual', value === model.$viewValue);
});
model.$parsers.push(function (value) {
var isValid = value === scope.$eval(attrs.nxEqual);
model.$setValidity('nxEqual', isValid);
return isValid ? value : undefined;
});
}
}
}
【问题讨论】:
-
注意指令中的两个字段
-
已添加指令功能,如果您对如何完成有任何建议
-
HTML 似乎有两个自定义指令:
equals和nx-equals。 JS 有一个名为ComparePassword的指令函数,但 HTML 中没有compare-password属性。很难说什么与什么有关。
标签: css angularjs angularjs-directive