处理 smart-table 中的格式化列和搜索功能

Deal with formatted columns and search feature in smart-table

谁能帮我搜索带格式的列?使用全局搜索,在 smart-table 示例(以及我的代码)中,如果我格式化某些列(例如货币过滤器),并且原始值为 102,并且我在列上显示 $102.00,用户输入 102.00 ,搜索功能找不到这个值,因为原始值为 102,而不是 102.00(带点和零),我该如何处理?谢谢

我猜您正在使用带有 st-search 指令的输入文本框来过滤您使用 angular 过滤器以标记格式显示的数值列。是这样的吗?

<table st-table="collection">
    <tr>
        <td>Id</td>
        <td>Cost</td>
    </tr>
    <tr>
        <td><input st-search="id" type="search"/></td>
        <td><input st-search="cost" type="search"/></td>
    </tr>
    <tr ng-repeat="row in collection">
        <td>{{row.id}}</td>
        <td>{{row.cost | currency}}</td>
    </tr>
</table>

有几种方法可以解决这个问题:

  • 如果该值仅供显示,您可以在将其放入范围以供使用之前对其进行预格式化。这也会带来其他好处;当数字有小数时,您不会遇到货币过滤器和可搜索基值中小数点后第二位四舍五入的问题,每个摘要周期都不会评估过滤器,这会显着提高大型和复杂数据集的性能,并且不需要其他更改您的代码而不是预先格式化 属性 并删除货币过滤器。
  • 您可以选择实现自己的搜索指令,在将值传递给 smart table 之前,您可以对值应用一些逻辑(请参阅下面 plunker 中的 stNumberRange 指令,了解如何实现自己的搜索插件).
  • 创建您自己的过滤器,其中比较逻辑解决了您的问题(请参阅指令中的 plunker 和查询对象以及 customFilter)

http://plnkr.co/edit/Idbc1JNHKylHuX6mNwZ6?p=preview