我在Angular中有以下表达式:

<br/><i>{{getFieldValue(teamMember.reportingData.fields, fieldname, 'meanValue' | number:2)}}</i>


其中getFieldValue是我的控制器上的函数。这按预期工作,并将数字结果截断为2个小数位。

但是,有时getFieldValue返回字符串结果。发生这种情况时,它根本不会显示。这可能是因为将字符串截断到2个小数位没有意义。

为了解决这个问题,我尝试将过滤器移到getFieldValue内,仅将其应用于数值结果。为此,我需要一种在Javascript中指定过滤器的方法,而不是在HTML中指定表达式。根据docs,这是可能的,但是难以理解。

这是我的尝试:

HTML:

<br/><i>{{getFieldValue(teamMember.reportingData.fields, fieldname, 'meanValue')}}</i>


getFieldValue的一部分:

if (field.numeric) {
   fieldValue = $filter('number')([], field[aggregate], 2);
 } else {
   fieldValue = field[aggregate];
 }


这不起作用,我得到的似乎是空字符串。如何正确执行此操作?

最佳答案

这样使用

 fieldValue = $filter('number')(field[aggregate], 2);


请参见number过滤器的Documentation

08-03 23:06