【发布时间】:2015-05-07 17:02:04
【问题描述】:
我正在尝试编写一个用于网格的过滤器,该过滤器将捕获所有 null、未定义、空白字符串或其他类似值并显示破折号“-”。到目前为止,我已经编写了以下内容,但它没有捕获空值,我想知道它是否可以更简洁并且可能进行重构以避免三层嵌套的 if/else 语句。需要检查百分比值是否大于 0 和小于 1。此外,负数和 0 应按原样返回。谢谢!
angular.module('AdverseEventsExplorer.main').filter('emptyCellFilter', function ($filter) {
return function (input, cellFilter, args1, args2) {
if (cellFilter == undefined) {
return (angular.isNumber(input) || angular.isDefined(input) && input.length > 0) ? input : '-';
} else {
if (cellFilter.match(/pctg|percent|pctgFilter|incidence/ig)) {
return (input > 0 && input < 1.0000000) ? $filter(cellFilter)(input, args1, args2) : '-';
} else {
return (angular.isNumber(input) || angular.isDefined(input) && input.length > 0) ? input : '-';
}
}
};
});
2.0 版考虑到@tymeJV 的评论:
angular.module('AdverseEventsExplorer.main').filter('emptyCellFilter', function ($filter) {
return function (input, cellFilter, args1, args2) {
if (!cellFilter) {
return (angular.isNumber(input) || (input)) ? input : '-';
} else {
if (cellFilter.match(/pctg|percent|pctgFilter|incidence/ig)) {
return (input > 0 && input < 1.0000000) ? $filter(cellFilter)(input, args1, args2) : '-';
} else {
return (angular.isNumber(input) || (input)) ? $filter(cellFilter)(input, args1, args2) : '-';
}
}
};
});
【问题讨论】:
-
null,undefined,0,""- 所有虚假值都可以只做if (value)检查。
标签: javascript angularjs if-statement angularjs-filter