处理智能表中的格式化列和搜索功能

时间:2015-07-10 02:48:42

标签: angularjs smart-table

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

1 个答案:

答案 0 :(得分: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