有条件地应用带有 ng-repeat 的过滤器

2023-11-21

我有一个对象,其中包含数字和文本值的混合。我想申请numbers当对象是数字时(显然),过滤到对象的值。但当它不是一个数字时,我就可以直接吐出字符串。照原样,申请| numberto the value 格式化数字,但将字符串值保留为空(毕竟,它们不是数字)。

我猜它必须是一个自定义过滤器(我还需要制作)。有没有办法在执行时仅在 HTML 中执行此操作ng-repeat?

<table>
      <tr ng-repeat="(metric, metricData) in data">
        <td>{{metric}}</td>
        <td>{{metricData | number}}</td>
      </tr>
</table>

$scope.data = { name:"this is the name", 
                score:48
                outcome:"as expected",
                attendance:820,
                total:212.34
              };

这是 @callmekatootie 所请求的替代版本答案,使用ng-if(v1.1.5):

<table>
    <tr ng-repeat="(metric, metricData) in data">
        <td>{{metric}}</td>
        <td ng-if="isNumber(metricData)">{{metricData | number}}</td>
        <td ng-if="!isNumber(metricData)">{{metricData}}</td>
    </tr>
</table>

这样做的优点是仅对数字元素运行过滤器。在这种情况下,这可能没有什么好处,但在其他更复杂的过滤器情况下可能很有用。回答您关于内置的其他问题angular.isNumber,@callmekatootie 确实在作用域函数中使用了它isNumber,它只是在视图中使用内置函数的包装器。

这是一个小提琴

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有条件地应用带有 ng-repeat 的过滤器 的相关文章