Отобразить данные за неделю в формате ng-repeat в формате гггг / мм / дд - PullRequest
1 голос
/ 30 марта 2019

Есть ли способ ограничить отображение в ng-repeat, используя формат строки даты? Я пытаюсь истечь определенные данные в таблице, например: если, например, дата 2019/03/22 .. она не будет отображаться в таблице, поскольку это были данные на прошлой неделе

angular.module('selectExample', [])
  .controller('ExampleController', ['$scope', function($scope) {
    $scope.register = {
      regData: {
        branch: {},
      },
      names: [
        {name:"narquois",date:"2019/03/30"},
        {name:"vorpal",date:"2019/03/28"},
        {name:"keen",date:"2019/03/25"},
        {name:"argol",date:"2019/03/18"},
        {name:"long",date:"2019/03/17"},
        {name:"propolis",date:"2019/03/16"}
      ],
    };
  }]);
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-app="selectExample" ng-controller="ExampleController">
<table id="example" width="100%">
    <thead>
       <tr align="center">
         <th>Name</th>
         <th>Date</th>
       </tr>
    </thead>			
    <tbody>
       <tr ng-repeat="person in register.names">
         <td align="center">{{ person.name }}</td>
         <td align="center">{{ person.date }}</td>
       </tr>
    </tbody>
</table> 
</div>

1 Ответ

1 голос
/ 30 марта 2019

Вы можете создать пользовательский фильтр, в котором вы можете получить первый и последний день недели и проверить, что дата, переданная из вашего массива, находится в этом диапазоне или нет.

js

$scope.filterCurrentWeek = function(row){   
  var today = new Date(); // get current date
  var first = today.getDate() - today.getDay();
  var last = first + 6;

  var firstDay = new Date(today.setDate(first)).toUTCString();
  console.log(firstDay)
  var lastDay = new Date(today.setDate(last)).toUTCString();
  console.log(lastDay)
  var rowDate = new Date(row.date)
  console.log(rowDate)

  if(Date.parse(firstDay) <= Date.parse(rowDate) && Date.parse(lastDay) >= Date.parse(rowDate)){
    return true;
  }
  else{
    return false;
  }

}

html

<table id="example" width="100%">
<thead>
   <tr align="center">
     <th>Name</th>
     <th>Date</th>
   </tr>
</thead>            
<tbody>
   <tr ng-repeat="person in register.names | filter: filterCurrentWeek">
     <td align="center">{{ person.name }}</td>
     <td align="center">{{ person.date }}</td>
   </tr>
</tbody>
</table> 

Демо

...