2016-06-02 2 views
1

Я пытаюсь сравнить 2 даты и фильтровать данные с результатом:Angularjs сравнивающие даты

мой контроллер:

$scope.checkDate = function(startDate){ 
    var todaysDate = new Date(); 
    return function(coupon){ 
     return coupon[startDate]<= todaysDate; 
    }; 
} 

мой HTML:

<div class="col-sm-3" id="coupon-tiles" ng-repeat="coupon in allCoupons| filter: checkDate('startDate')" ng-if="coupon.amount>0" > 
     <div> 
      <image ng-src={{coupon.image}}> 
     </div> 
     <div>{{coupon.title}}</div> 
     <div>price:{{coupon.price}}</div> 
     <div>start date:{{coupon.startDate}}</div> 
     <div>end date:{{coupon.endDate}}</div> 

     <div class="btn-group" role="group" aria-label="..."> 
      <button type="button" class="btn btn-default" ng- click="buy(coupon)">Purchase</button> 
     </div> 

    </div> 

Купоны прибывают из db через json, даты - это java sql date, поэтому формат - yyyy, mm, dd, Jersey и Ja ckson делает синтаксический анализ.

Ничто не похоже на работу, кто-то может помочь

+2

http://momentjs.com/ является хорошим, чтобы играть с датами – Prasad

ответ

1

Ваши даты БД в формате строки. Вам необходимо преобразовать его в объект JS Date для их сравнения. Попробуйте следующее:

$scope.checkDate = function(startDate){ 
var todaysDate = new Date(); 
return function(coupon){ 
    return Date.parse(coupon[startDate]) <= todaysDate; 
}; 
} 
+0

Он работает, спасибо. –

0

Попробуйте упростить функцию фильтра, как

$scope.checkDate = function(startDate){ 
    return startDate.getTime() <= new Date().getTime(); 
} 

И в вашем HTML

<div class="col-sm-3" id="coupon-tiles" ng-repeat="coupon in allCoupons| filter: checkDate(coupon.startDate)" ng-if="coupon.amount>0" > 
+0

startDate.getTime() не определено, это ошибка, которую я получаю. –

0

Я пытаюсь это, и это работает:

var startDate = $filter('date')($scope.StartDate, "yyyy-MM-dd"); 
var endDate = $filter('date')($scope.EndDate, "yyyy-MM-dd"); 
if (startDate > endDate) { 
    //some code 
} 

Для использования $filter вам нужно вводить $filter в контроллере.

+0

спасибо за ваш ответ! –

Смежные вопросы