1

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

4

1 回答 1

2

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

<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>

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

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

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

于 2015-08-05T07:09:00.810 回答