2015-03-24 71 views
0

我想知道是否有人能帮助我,过滤器上的NG-重复内日期 我有我在表中输入搜索文本的过滤结果的文本字段角JS过滤器在日期

借此削减example`

<tr id="credentialsData" ng-repeat="credential in credentials.data | filter:credentialsSearchText"> 
     <td>{{credential.createdDate | date:'medium'}}</td> 
</tr>` 

credential.createdDate回来的REST调用的格式为2015-03-24T21:19:49Z

当我附上媒体日期过滤器 - 它显示为2015年3月24日下午9:19:49

但是,当我搜索字符串3月或9 :,我没有结果。 Angularjs在基础对象上搜索并忽略过滤器。 我看过其他的选择在线那里的人建议将不同的日期格式为JSON对象,但不幸的是,这并不是我的选择

任何帮助,将不胜感激

干杯 达明

回答

1

您可以使用过滤器的自定义功能。

https://docs.angularjs.org/api/ng/filter/filter

<tr id="credentialsData" ng-repeat="credential in credentials.data | filter:credentialsSearchText:compareCredentialDate"> 
     <td>{{credential.createdDate | date:'medium'}}</td> 
</tr> 

在你的控制器,把

$scope.compareCredentialDate = function(credential, expected) { 
    // you have to inject '$filter' to use this: 
    var dateFilter = $filter('date'); 

    // this is the value that "credential.createdDate | date:'medium'" 
    // evaluates to: 
    var formattedDateString = dateFilter(credential.createdDate, 'medium'); 

    // hypothetical matching method - you can implement whatever you 
    // want here:  
    var isMatch = formattedDateString.indexOf(expected) >= 0; 

    return isMatch; 
} 
+0

感谢Smithecus - 生病尝试,现在让你知道我的身体情况如何 – Damien 2015-03-24 23:11:05

+0

难道这个函数可以写成这样了滤镜可以全面使用? – Damien 2015-03-24 23:23:20

+1

您可以在module.run()回调函数中将该函数添加到$ rootScope中,以便compareCredentialDate在任何地方都可用。过滤器会比它的价值更麻烦 - 相信我。 :) – 2015-03-26 15:09:44