2017-11-09 11 views
0

この日付範囲を使用することはできませんfilter?私が日付を選ぶと、それは誘発するようだが、その中で何かを押すことはない。var filter日付範囲フィルタが機能しません

私はすでに何時間もこの問題に取り組んでいない。

HTML

<div class="form-group"> 
    <input type="date" class="form-control" ng-model="from"> 
</div> 
<div class="form-group"> 
    <input type="date" class="form-control" ng-model="to"> 
</div> 

NGリピート

<tr ng-repeat="attendance in displayedCollection | dateRange:from:to "> 
<td>{{ attendance.day | date: 'EEEE, MMM d'}}</td> 
<td>{{ attendance.timeIn | date:'h:mm a' }}</td> 
<td>{{ attendance.timeOut | date:'h:mm a'}}</td> 
<td class="text-capitalize"> 
<i class="fa fa-map-marker" aria-hidden="true"></i> {{ attendance.details }}</td> 
<td>{{ attendance.totalHrs | date:'hh:mm'}} </td> 
</tr> 

コントローラ

.filter('dateRange', function() { 
    return function (product, fromDate, toDate) { 
    var filtered = []; 

    if (!fromDate && !toDate) { 
     return product; 
    } 

    var from_date = Date.parse(fromDate); 
    var to_date = Date.parse(toDate); 

    angular.forEach(product, function (item) { 
     if (item.day > from_date && item.day < to_date) { 
     filtered.push(item); //not pushing anything 
     } 
    }); 
    return filtered; // returning nothing 
    }; 
}) 

EDIT:

displayedCollectionデータ

[{ 
    "_id": "5a03bed5c349e82fa4937430", 
    "details": "MHQ Lucena Branch 2", 
    "fullName": "Priz almarinez", 
    "timeIn": "2017-11-09T02:34:57.000Z", 
    "attendance": "admin11-09-2017", 
    "day": "2017-11-08T16:00:00.000Z", 
    "user": "admin", 
    "__v": 0, 
    "status": "Pending", 
    "check": false 
}, 
{ 
    "_id": "5a03c4e61bebc52c0737a426", 
    "details": "MHQ Lucena Branch 2", 
    "fullName": "Priz almarinez", 
    "timeIn": "2017-11-09T02:34:57.000Z", 
    "attendance": "admin11-09-2017", 
    "day": "2017-11-09T16:00:00.000Z", 
    "user": "admin", 
    "__v": 0, 
    "status": "Pending", 
    "check": false 
}, 
{ 
    "_id": "5a03c4ec1bebc52c0737a427", 
    "details": "MHQ Lucena Branch 2", 
    "fullName": "Priz almarinez", 
    "timeIn": "2017-11-09T02:34:57.000Z", 
    "attendance": "admin11-09-2017", 
    "day": "2017-11-10T16:00:00.000Z", 
    "user": "admin", 
    "__v": 0, 
    "status": "Pending", 
    "check": false 
}] 

おかげ

+0

デバッグを試したことがありますか?いくつかの 'console.log'呼び出しでさえ助けになります – Phil

+1

' item.day'はどのデータ型ですか? – Phil

+0

@Phil 'item.day'はfrom_dateとto_dateのログを記録しようとした日付で、正しいと思われました。 – Priz

答えて

1

あなたが現在比較しているあなたのitem.dayTimeString( "2017-11-10T16:00:00.000Z")、解析された日付Integerへ。 forEachループ内のitem.dayを解析し、比較してください。期待どおりに動作します。 https://codepen.io/pablo-tavarez/pen/pdRvjW?editors=0010

+0

現在は動作していますが、なぜdisplayedCollection.lengthは変更されませんか? – Priz

+0

元の 'displayedCollection'は元のままです。フィルターは**コピー**を作成し、そのコピーをフィルターに掛けました。ここでは、あなたが求める答えへのリンクがあります。 https://stackoverflow.com/questions/15316363/how-to-display-length-of-filtered-ng-repeat-data – sgiant

関連する問題