2015-11-02 74 views
1

我在AngularJS中使用过滤器来执行搜索功能。AngularJS:根据格式化日期筛选/搜索

<tr ng-repeat="order in orders | orderBy:sortType:sortReverse |filter:searchValue"> 

在该表中,我有我格式化和MM/DD/YYYY显示的日期字段:

<td> 
    {{order.OrderDate | date:"MM/dd/yyyy"}} 
</td> 

的问题是,原来的日期类型是一样的东西:“2015 - 10-30',过滤将基于此。所以如果我搜索10/30/2015,它将不会返回任何内容。有什么办法可以解决这个问题吗?

+0

注入$filter在我的答案 –

回答

1

声明范围的方法

像这样

$scope.filterValue=function(obj){ 
    return $filter('date')(obj.OrderDate, 'MM/dd/yyyy') == $filter('date')($scope.searchValue, 'MM/dd/yyyy') 
} 

添加这个方法到HTML的过滤器

像这样

<tr ng-repeat="order in orders | orderBy:sortType:sortReverse |filter:filterValue"> 

N:B:

你有你的控制器

0

尝试这样

Working Demo

脚本

var app = angular.module('myApp', []); 
app.controller('Controller', function ($scope) { 
    $scope.order = {}; 
    $scope.order.OrderDate = "2015-10-30"; 


    $scope.parseDate = function(input) { 
     var parts = input.split('-'); 
     return new Date(parts[0], parts[1] - 1, parts[2]); 
    }; 
}); 

HTML

<div ng-app='myApp' ng-controller="Controller"> 
    {{parseDate(order.OrderDate) | date:"MM/dd/yyyy"}} 
</div> 

输出

10/30/2015 
+0

看看谢谢您的回答。但对于我的情况,格式工作很好。但搜索/过滤是基于未格式化的日期,而不是格式化的日期。 –

+0

@Nidhish op的问题是在搜索不显示,可能是? –

+0

@LanceShi searchValue有没有限制?或者你的searchValue将总是在'MM/dd/yyyy:'中? –