Search code examples
javascriptangularjsangularjs-ng-repeatangular-filters

How to filter ng-repeat with dates greater than in ng-repeat


I want to add filter to filter ng-repeat by date greater than today.
For example to have a checkbox when check it to display only dates greater than today and uncheck display all.
Here what I tried:

$scope.gteComparator = function (a, b) {
   return new Date(a) >= new Date(b);
};
$scope.greaterThan = function (prop, val) {
   return prop > val;
}

On the view:

ng-repeat="row in myModel" | filter: firstFilter| | filter:{ 'DateColumn': (new Date()) }:gteComparator

or

| filter: greaterThan('DateColumn', new Date())

But none work, what should I do?


Solution

  • On the view:

    ng-repeat="row in myModel | myFilter"
    

    Controller code:

    var nameSpace = angular.module('tst',[]);
    nameSpace.controller('MyController', function MyController($scope) {
    //controller here
    });
    
    nameSpace.filter("myfilter", function() {
      return function(items) {
        var arrayToReturn = [];        
        for (var i=0; i<items.length; i++){
            var date = items[i].date;
            if (date > new Date())  {
                arrayToReturn.push(items[i]);
            }
        }
    
        return arrayToReturn;
     };
    });