我目前正在使用ngMask来处理用户输入的屏蔽。它工作得很好,但是,AFAIK只能在 $( ".selector" ).tabs({
active: 1
});
元素上使用。我现在需要屏蔽相同的数据进行显示。例如,在表格中,我希望将input
显示为item.ssn = 123456789
。
最好的方法是什么?我知道我可以制作自定义过滤器,但是想知道是否有通用的方法来为所有文本执行此操作。如果你可以扩展ngMask功能......就像这样......
123-45-6798
或作为过滤器......
<td><span mask="999-99-9999">{{item.ssn}}</span></td>
答案 0 :(得分:1)
查看date
过滤器。你几乎需要实现相同的但是对于字符串。您可以使用source code作为参考。
在最简单的情况下,您可以使用简单的正则表达式替换:
angular.module('myModule').filter('ssn', function() {
return function(text) {
return (""+text).replace(/(\d\d\d)(\d\d)(\d\d\d\d)/, '$1-$2-$3');
}
})
<td>{{item.ssn|ssn}}</td>
答案 1 :(得分:1)
您需要实施过滤器。您可以依赖于ngMask提供的recv()
:
MaskService
然后:
angular.module('myModule').filter('mask', ['MaskService', function(MaskService) {
return function(text, mask) {
var result,
maskService = MaskService.create(),
if (!angular.isObject(mask)) {
mask = { mask: mask }
}
maskService.generateRegex(mask).then(function() {
result = maskService.getViewValue(text).withDivisors()
}
return result;
}
}])
答案 2 :(得分:1)
适合我。关注。
https://github.com/alairjt/displayMask
<span>{{'01234567890' | mask:'999.999.999-99'}}</span>
// 012.345.678-90
答案 3 :(得分:-1)