通过过滤器应用通用掩码?
Apply generic mask via filter?
我目前正在使用 ngMask 来处理用户输入的屏蔽。效果很好,但是据我所知,只能用于 input
元素。我现在需要屏蔽这些相同的数据以供显示。例如,在 table 中,我希望将 item.ssn = 123456789
显示为 123-45-6798
。
最好的方法是什么?我知道我可以制作自定义过滤器,但想知道是否有一种通用方法可以对所有文本执行此操作。如果您可以扩展 ngMask 功能,就像这样...
<td><span mask="999-99-9999">{{item.ssn}}</span></td>
或作为过滤器...
<td>{{item.ssn|filter:'999-99-9999'}}</td>
看看 date
filter. you pretty much need to implement the same but for strings. You can use source code 以供参考。
在最简单的情况下,您可以使用简单的正则表达式替换:
angular.module('myModule').filter('ssn', function() {
return function(text) {
return (""+text).replace(/(\d\d\d)(\d\d)(\d\d\d\d)/, '--');
}
})
<td>{{item.ssn|ssn}}</td>
您需要实施过滤器。您可以依赖 ngMask 提供的 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;
}
}])
然后:
<td>{{item.ssn | mask:'999-99-9999'}}</td>
适合我。关注
https://github.com/alairjt/displayMask
<span>{{'01234567890' | mask:'999.999.999-99'}}</span>
//012.345.678-90
只需使用AngularJS
{{youdate | date : "dd.MM.y"}}
我目前正在使用 ngMask 来处理用户输入的屏蔽。效果很好,但是据我所知,只能用于 input
元素。我现在需要屏蔽这些相同的数据以供显示。例如,在 table 中,我希望将 item.ssn = 123456789
显示为 123-45-6798
。
最好的方法是什么?我知道我可以制作自定义过滤器,但想知道是否有一种通用方法可以对所有文本执行此操作。如果您可以扩展 ngMask 功能,就像这样...
<td><span mask="999-99-9999">{{item.ssn}}</span></td>
或作为过滤器...
<td>{{item.ssn|filter:'999-99-9999'}}</td>
看看 date
filter. you pretty much need to implement the same but for strings. You can use source code 以供参考。
在最简单的情况下,您可以使用简单的正则表达式替换:
angular.module('myModule').filter('ssn', function() {
return function(text) {
return (""+text).replace(/(\d\d\d)(\d\d)(\d\d\d\d)/, '--');
}
})
<td>{{item.ssn|ssn}}</td>
您需要实施过滤器。您可以依赖 ngMask 提供的 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;
}
}])
然后:
<td>{{item.ssn | mask:'999-99-9999'}}</td>
适合我。关注
https://github.com/alairjt/displayMask
<span>{{'01234567890' | mask:'999.999.999-99'}}</span>
//012.345.678-90
只需使用AngularJS
{{youdate | date : "dd.MM.y"}}