1

Here is my problem, i would like to compare 2 dates and display every date for which my ng-if is true. But this don't work because when only one of my user.created_at is inferior to time my ng-ifreturn false and nothing is display.

<ul ng-repeat="user in userticket track by $index" ng-if="user.created_at > time" >
       <li class="row ticketlist">{{user.created_at | amDateFormat:'YYYY.MM.DD'}}</li>
</ul>

and in my controller:

$scope.time = "2015-06";
moskitos
  • 149
  • 1
  • 2
  • 13

2 Answers2

1

Use Date objects for all the times. Then you can compare directly

$scope.time = new Date(2015, 5);

I can't see what format user.created_at is but if it isn't a Date object you can parse/convert that too.

https://jsfiddle.net/3pvk51xu/

fhollste
  • 785
  • 6
  • 16
  • not working, i already tried convert it but not working because `ng-if`return no result if one of his result in ng-repeat is false – moskitos May 24 '16 at 13:04
1

Best way is to create a custom filter. See ng-repeat filtering data by date range.

This is the solution:

JSFIDDLE

html

<input ng-model="dateFrom" type="text"/>
<input ng-model="dateTo" type="text"/>
<tr ng-repeat="order in orders | myfilter:dateFrom:dateTo">
  <td>{{order.date1 * 1000 | date:'dd-MM-yyyy'}}</td>
  <td>{{order.date2 * 1000 | date:'dd-MM-yyyy'}}</td>
</tr>

javascript

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

nameSpace.filter("myfilter", function() {
  return function(items, from, to) {
        var df = parseDate(from);
        var dt = parseDate(to);
        var result = [];        
        for (var i=0; i<items.length; i++){
            var tf = new Date(items[i].date1 * 1000),
                tt = new Date(items[i].date2 * 1000);
            if (tf > df && tt < dt)  {
                result.push(items[i]);
            }
        }            
        return result;
  };
});
also, i changed the timestamp data type from string to numbres.

  $scope.orders = [
  {
    "date1": 1306487800,
    "date2": 1406587800
  },
  {
    "date1": 1196487800,
    "date2": 1406597800
  }]
Community
  • 1
  • 1
C. Molendijk
  • 2,614
  • 3
  • 26
  • 35