2017-11-09 16 views
0

私はdate range filterを作成しています。日付範囲フィルタdoes not change collection.length

しかし、私はそれをフィルタリングするときにdisplayedCollection.lengthが変更されないのはなぜですか? displayedCollection.length値が

HTML

<i class="fa fa-filter" aria-hidden="true"></i> Results : {{displayedCollection.length}}</h2> 

<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 ($filter) { 
    return function (items, fromDate, toDate) { 
    var filtered = []; 
    if (!fromDate && !toDate) { 
     return items; 
    } 

    var from = Date.parse(fromDate) - 1; 
    var to = Date.parse(toDate) + 1; 

    items.day = new Date(); 

    angular.forEach(items, function (item) { 
     var itemDayParsed = Date.parse(item.day); 

     if (itemDayParsed > from && itemDayParsed < to) { 
     filtered.push(item); 
     } 
    }); 
    return filtered; 
    }; 
}) 

おかげであろうよう

例えばよう唯一つの結果があります。

答えて

3

displayedCollectionあなたはフィルタリングの結果を紹介する必要があり、同じままだからである:temp、それの長さの値は、あなたが期待する正確に、何を次のようになります。

<i class="fa fa-filter" aria-hidden="true"></i> Results : {{temp.length}}</h2> 

<tr ng-repeat="attendance in (displayedCollection | dateRange:from:to) as temp"> 
    <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> 
+0

はそんなにカントは、その簡単なハハと信じてありがとうございました。私はあなたの答えを後で感謝します。 – Priz