【AngularJS】日付範囲の選択を実現するカスタムフィルタ

More than 1 year has passed since last update.

ググっても上手く見つからず、自分で作ってみました。

// 日付範囲選択用のフィルタ
app.filter('dateSelectFrom', function() {
    return function(input, from) {
        var arr = [];
        input.some(function(v, i) {
            if (v.date >= Date.parse(from)) {
                arr.push(input[i]);
            }
        });
        return arr;
    };
});
app.filter('dateSelectTo', function() {
    return function(input, to) {
        var arr = [];
        input.some(function(v, i) {
            if (v.date <= Date.parse(to)) {
                arr.push(input[i]);
            }
        });
        return arr;
    };
});

こんな感じでフィルタを適用できます。

<tr ng-repeat="item in items|dateSelectFrom:dateFrom|dateSelectTo:dateTo>

ユーザに日付を選択させる場合は、HTML5の

<input type="date" ng-model="dateFrom">

を使うと楽。

動くサンプルはこちらから。

【AngularJS】日付範囲の選択を実現するカスタムフィルタ - jsdo.it