4
我做了一个密码字段,显示检查复选框时的密码。
我使用ng-minlenght和ng-maxlength来控制密码长度。密码复选框字段AngularJS最小/最大长度问题
当密码在输入字段的最小和最大长度之间时,它将显示密码文本。
但是,当密码无效/不在字段的最小和最大长度之间时,我会得到一个emtpy值。
这是在角中的错误还是我做错了什么?
我做了一个密码字段,显示检查复选框时的密码。
我使用ng-minlenght和ng-maxlength来控制密码长度。密码复选框字段AngularJS最小/最大长度问题
当密码在输入字段的最小和最大长度之间时,它将显示密码文本。
但是,当密码无效/不在字段的最小和最大长度之间时,我会得到一个emtpy值。
这是在角中的错误还是我做错了什么?
这是通过设计,但我找不到明确声明它的文档中的任何参考。在满足验证条件之前,角度不会改变您的模型。您可以看到通过在输入上方添加{{user.password}}
来证明(here)。在输入8个字符之前,您不会在页面上看到文字。
您可以通过使用一个指令,手动同步像两个文本字段,以便解决这个问题:
http://jsfiddle.net/langdonx/K6Qgm/11/
HTML
<div ng-app="app" ng-controller="x">
password is: {{user.password}}
<br/>
<br/>
standard input:
<input ng-model="user.password" name="uPassword" type="password" ng-hide="isChecked" ng-minlength="8" ng-maxlength="20" placeholder="Password" required/>
<br/>
<br/>
password directive:
<password ng-model="user.password" name="uPassword" />
</div>
的JavaScript
function x($scope) {
$scope.user = {
password: 'x'
};
}
angular.module('app', [])
.directive('password', function() {
return {
template: '' +
'<div>' +
' <input type="text" ng-model="ngModel" name="name" ng-minlength="8" ng-maxlength="20" required />' +
' <input type="password" ng-model="ngModel" name="name" ng-minlength="ngMinlength" required />' +
' <input type="checkbox" ng-model="viewPasswordCheckbox" />' +
'</div>',
restrict: 'E',
replace: true,
scope: {
ngModel: '=',
name: '='
},
link: function (scope, element, attrs) {
scope.$watch('viewPasswordCheckbox', function (newValue) {
var show = newValue ? 1 : 0,
hide = newValue ? 0 : 1,
inputs = element.find('input');
inputs[show].value = inputs[hide].value;
inputs[hide].style.display = 'none';
inputs[show].style.display = '';
});
}
};
});
谢谢你r时间和响应;)将试试这个 – tdhulster 2013-04-23 14:21:35
我实际上还在玩它 - 我似乎无法得到表单验证工作内部的指令。这种形式似乎并不能很好地发挥作用。 – Langdon 2013-04-23 14:44:52
奇怪的是,他并没有在他的范围内保留价值,我想我会删除ng-minlength并自己控制价值 – tdhulster 2013-04-23 15:27:59