2016-01-30 5 views
1

Я бы хотел проверить, активна ли кампания или нет. Датами deal.Campaign.start и deal.Campaign.end являются строки из моего бэкэнда, now - объект даты. Как я могу нарисовать объекты на сегодняшний день в файле HTML?Сравнение дат в Angular JS

В идеале я бы создал объекты даты в контроллере, но это не сработает, поскольку я перебираю объекты в файле HTML.

controller.js:

$scope.now = new Date(); 

HTML:

<span ng-repeat="deal in deals"> 
    <span ng-show="deal.Campaign.start < now && deal.Campaign.end > now"> 
     <span>Active</span> 
    </span> 
</span> 

ответ

1

Путь я бы решить это превратить все Date сек в мс строк:

$scope.now = new Date().getTime();

И те же с другими датами:

$scope.deal.Campaign.start = Date.parse($scope.deal.Campaign.start);

Таким образом, вы просто будете сравнивать числа.

Учитывая ng-repeat, это все еще выполнимо, хотя через функцию:

$scope.formDate = function(date) { 
    return new Date(date).getTime(); 
} 

И в вашем HTML:

<span ng-show="formDate(deal.Campaign.start) < now && formDate(deal.campaign.end) > now"> 
+0

Я зацикливание над 'deals' в HTML-файле. Как я могу это сделать? – doonot

+0

Ах, пропустил 'ng-repeat'. Обновление ответа (хотя оно может быть немного менее красивым) –

+0

Можете ли вы гарантировать, что * Date.parse * будет правильно анализировать предоставленный формат, тем более, что «* ... строки из моего backend *» могут быть любыми и * Date.parse * почти полностью зависит от реализации? – RobG