AngularJS - 过滤日期和字符串的结果

时间:2017-09-29 13:17:53

标签: angularjs

在AngularJS中,您可以按如下方式过滤结果:

<input type="search" ng-model="qcCtrl.searchTerm" placeholder="search" />

<tr ng-repeat="row in qcCtrl.data | filter: qcCtrl.searchTerm">
    <td>{{row.dateField | date: 'yyyy-MM-dd HH:mm:ss'}}</td>
    <td>{{row.textField}}</td>
</tr>

如果用户在搜索框中输入文本,则此方法正常,但如果他们输入日期,则找不到匹配项。

如何创建一个与文本和日期匹配的过滤器?

我已经开始在我的控制器中创建自定义日期过滤器功能(下面),但是这只适用于日期,我想要一些适用于文本和日期的东西。

ctrl.filterDate = function (item) {

    var dateFilter = $filter('date');
    var formattedDateString = dateFilter(item.FifoDate, 'yyyy-MM-dd HH:mm:ss');

    return ctrl.searchTerm == null || ~formattedDateString.indexOf(ctrl.searchTerm);

};

1 个答案:

答案 0 :(得分:0)

为了解决这个问题,我只是在我的对象上创建了另一个包含格式化日期的属性,然后现有的过滤器工作了:

angular.forEach(ctrl.data, function(value, index) {

value.FifoDate = new Date(parseInt(value.FifoDate.substr(6)));
value.searchFifoDate = $filter('date')(value.FifoDate, 'yyyy-MM-dd HH:mm:ss');