Javascript 使用十进制对正数和负数进行筛选和排序
我正在使用Javascript 使用十进制对正数和负数进行筛选和排序,javascript,jquery,angularjs,angular-ui-grid,Javascript,Jquery,Angularjs,Angular Ui Grid,我正在使用angularjs ui grid以表格形式显示数据。数据在网格中绑定得非常好。在网格中,很少有列具有应用了angularjscurrency过滤器的正数和负数 现在,当我用它过滤行时,它不能按照要求工作 我正在使用以下代码: cellFilter: 'customCurrencyFormat:"hideZero"',
angularjs ui grid
以表格形式显示数据。数据在网格中绑定得非常好。在网格中,很少有列具有应用了angularjs
currency过滤器的正数和负数
现在,当我用它过滤行时,它不能按照要求工作
我正在使用以下代码:
cellFilter: 'customCurrencyFormat:"hideZero"',
filter: {
condition: function(searchTerm, cellValue) {
console.log(':::cellValue:::', cellValue);
searchTerm = searchTerm.replace(/^-?[0-9]\d*(\.\d+)?$/g, '');
console.log(':::searchTerm:::', searchTerm);
var strippedValue = (cellValue + '').replace(/^-?[0-9]\d*(\.\d+)?$/g, '');
console.log(':::strippedValue:::', strippedValue);
return strippedValue.indexOf(searchTerm) >= 0;
}
},
filterCellFiltered:true,
请查找customCurrencyFormat
的以下代码:
HelperServices.filter('customCurrencyFormat',函数($filter){
返回函数(val、cond、decimalPlaces){
if(decimalPlaces的类型=='undefined'| | decimalPlaces==null){
小数位数=2;
}
如果(val==“0”&&cond==“showZero”){
返回($filter('currency')(val,“,decimalPlaces));
}else if(val==0&&cond==“hideZero”){
返回null;
}否则{
if(val<0){
返回($filter('currency')(val,“,decimalPlaces)).replace(“(”,“-”).replace(“),”);
}否则{
返回($filter('currency')(val,“,decimalPlaces));
}
}
}
}))
显示空白代替0符合要求。使用此过滤器,如果我在过滤器中输入,
,值就会出现。即使没有,
,它也会产生一些意想不到的结果。带小数的数字永远不能与这些筛选器一起使用
用户将在过滤器输入框中输入不带,
的数字。如果没有给出符号,则显示正数和负数。如果给出了-
号,则只会出现负数
更新
请查看屏幕截图:
if(typeof decimalPlaces =='undefined' || decimalPlaces ==null ){
decimalPlaces = 2;
}
if(val == "0" && cond == "showZero"){
return ($filter('currency')(val, "", decimalPlaces));
}else if(val == 0 && cond == "hideZero"){
return null;
}else{
if(val < 0){
return ($filter('currency')(val, "", decimalPlaces)).replace("(", "-").replace(")", "");
}else{
return ($filter('currency')(val, "", decimalPlaces));
}
}
}