Javascript 简单数据比较器
我试图用AngularJS实现一个简单的日期比较器。基本上,我将有一个带有dateStart和dateExpire字段的优惠券列表。我希望通过比较用户输入的searchStartDate和searchExpireDate与优惠券本身的dateStart和dateExpire来筛选此列表。我现在在控制器中拥有的是:Javascript 简单数据比较器,javascript,angularjs,Javascript,Angularjs,我试图用AngularJS实现一个简单的日期比较器。基本上,我将有一个带有dateStart和dateExpire字段的优惠券列表。我希望通过比较用户输入的searchStartDate和searchExpireDate与优惠券本身的dateStart和dateExpire来筛选此列表。我现在在控制器中拥有的是: $scope.startDateFilter = function (coupon) { var filteredList = []; var
$scope.startDateFilter = function (coupon) {
var filteredList = [];
var searchStartDay = new Date().getDate();
var searchStartMonth = new Date().getMonth();
var searchStartYear = new Date().getYear();
var startDate = new Date(coupon.dateStart).getDate();
var startMonth = new Date(coupon.dateStart).getMonth();
var startYear = new Date(coupon.dateStart).getYear();
if (searchStartDay <= startDate && searchStartMonth <= startMonth && searchStartYear <= startYear)
filteredList.push(coupon);
if (searchStartMonth < startMonth && searchStartYear <= startYear)
filteredList.push(coupon);
if (searchStartYear < startYear)
filteredList.push(coupon);
return filteredList;
}
此块是用于比较startDate和用户输入searchStartDate的自定义筛选器。然而,这对我不起作用
我的看法是:
<tbody data-ng-repeat="coupon in activeList = (couponList | filter: {name: searchParent} | filter: startDateFilter) " data-ng-switch on="couponCollapse[$index]">
有人知道我为什么会在这里遇到问题吗?您可以使用纯日期比较,因为您已经有了一个有效的日期对象。试试这个
$scope.startDateFilter = function (coupon) {
var filteredList = [];
var searchStartDate = new Date();
var startDate = new Date(coupon.dateStart);
if (searchStartDate < startDate)
filteredList.push(coupon);
return filteredList;
}
这是一本书。只要使用,就可以使用标准比较,例如==,=>等
自定义筛选器:
app.filter('dateRangeFilter', function() {
return function(coupons, from, to) {
var result = [];
for (var i = 0; i < coupons.length; i++) {
if(coupons[i].startDate >= from && coupons[i].endDate <= to)
result.push(coupons[i]);
}
return result;
};
})
用法:
<body ng-controller="MainCtrl">
Start Date:
<input ng-model="sd" type="date" />
<br/>End Date:
<input ng-model="ed" type="date" />
<br/>
<ul>
<li ng-repeat="coupon in coupons | dateRangeFilter:sd:ed">
{{ coupon.startDate | date:'MM-dd-yyyy'}} to {{ coupon.endDate | date: 'MM-dd-yyyy' }}
</li>
</ul>
</body>
我建议实现一个自定义过滤器,以更好地分离我同意的关注点。关注点的分离是angularjs如此吸引人的原因之一。看看我的答案。啊,我觉得自己很笨,不知道你可以直接比较两个约会对象。谢谢你的回答!哦,我明白了,标准比较是否也适用于datetime本地输入?