我使用$formatters
属性来屏蔽文本框,用户可以在其中输入帐号。输入时的文本框应显示*
而不是实际帐号。
但是使用$formatters
并没有按预期工作,因为当用户运行应用程序时它只运行一次。一旦我们更改了模型值,就不会调用$formatters
函数。每当模型值发生变化时,我们是否有任何解决方法来运行$formatters
函数。
答案 0 :(得分:1)
你可以在这里发布你的代码吗? 在我的头顶,我可以建议像这样的东西
.directive('changeValue', function () {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, element, attrs, ngModel) {
ngModel.$formatters.push(function(){
var value = ngModel.$modelValue;
var string ="";
for(var i=0;i<(value.length);i++){
string +="#";
}
return string
})
element.bind('keydown', function () {
console.log(ngModel);
scope.$apply(setAnotherValue);
});
function setAnotherValue() {
var data = angular.copy(ngModel);
var value = element.val();
var string ="";
for(var i=0;i<(value.length);i++){
string +="#";
}
//element.val(string).trigger('input')
// ngModel.$formatters.push(function(){
// return string
// })
ngModel.$viewValue = string;
ngModel.$render();
ngModel.$parsers.push(function(){
return ngModel.$modelValue;
})
}
}
};
});
link to plunkr 这不是完美的代码,将在几个小时内回家,同时你可以检查一下这是否有效?