ベストな方法は、カスタムフィルタを作成することです。 ng-repeat filtering data by date rangeを参照してください。
これがソリューションです:
JSFIDDLE
HTML
<input ng-model="dateFrom" type="text"/>
<input ng-model="dateTo" type="text"/>
<tr ng-repeat="order in orders | myfilter:dateFrom:dateTo">
<td>{{order.date1 * 1000 | date:'dd-MM-yyyy'}}</td>
<td>{{order.date2 * 1000 | date:'dd-MM-yyyy'}}</td>
</tr>
javascriptの
function parseDate(input) {
var parts = input.split('-');
return new Date(parts[2], parts[1]-1, parts[0]);
}
nameSpace.filter("myfilter", function() {
return function(items, from, to) {
var df = parseDate(from);
var dt = parseDate(to);
var result = [];
for (var i=0; i<items.length; i++){
var tf = new Date(items[i].date1 * 1000),
tt = new Date(items[i].date2 * 1000);
if (tf > df && tt < dt) {
result.push(items[i]);
}
}
return result;
};
});
also, i changed the timestamp data type from string to numbres.
$scope.orders = [
{
"date1": 1306487800,
"date2": 1406587800
},
{
"date1": 1196487800,
"date2": 1406597800
}]
が機能していない、私はすでにそれを変換しようとしたが、 'ので、動作していませんng-if'結果がng-repeatの結果が偽である場合、結果は返されません – moskitos
確かに動作します:https://jsfiddle.net/3pvk51xu/ – fhollste
ええ、それは大変ありがとうございます! – moskitos