0
我正在尝试使用日期范围来筛选ng-repeat。如何使用AngularJS过滤日期范围?
到目前为止,我已经安装了Daterangepicker,它会在触发选取器的输入的ng模型中返回一个包含两个属性(startDate和endDate)的对象(ng-model="dates"
)。
它看起来像这样:
Object
endDate:
k_d: Mon Nov 03 2014 23:59:59 GMT+0300 (E. Africa Standard Time)
_isAMomentObject: true
_isUTC: false
_isValid: true
_locale: j
_pf: Object_
_proto__: k
startDate: k_d: Sat Oct 04 2014 00:00:00 GMT+0300 (E. Africa Standard Time)
_isAMomentObject: true
_isUTC: false
_isValid: true
_locale: j
_pf: Object_
_proto__: k
在另一方面我有我的NG-重复,列出对象的数组,具有date
属性他们中的每一个。
<div class="row msf-row"
ng-repeat="record in recordlist | filter:dateFilter | limitTo : -100">
<div class="col-md-1">{{record.date}}</div>
</div>
我已经建立了一个过滤器,以试图通过一系列对其进行过滤:
$scope.dateFilter = function (record) {
return record.date >= $scope.dates.startDate && record.date <= $scope.dates.endDate;
};
但到目前为止过滤器不能正常工作。我错过了什么?
编辑
我已经意识到record.date
是一个字符串,而的startDate和结束日期的那一刻()对象。有没有什么办法可以将record.date
解析成filter()对象之前的过滤器函数?
EDIT 2
定了!我不得不解析result.date
作为momentjs对象,也包括这样的正确的格式:moment(string, format)
:
$scope.dateFilter = function (record) {
return
moment(record.date, "DD[/]MM[/]YYYY") >= $scope.dates.startDate
&&
moment(record.date, "DD[/]MM[/]YYYY") <= $scope.dates.endDate;
};
其实你是对的。 startDate和endDate是moment()实例,但record.date是一个字符串。我能否以某种方式解析它()? – 2014-11-03 18:00:06
我以前没有使用过moment.js,但是看着他们的API,你可以做一些像$ scope.dates.startDate.format()这样的将时刻转换为日期字符串的东西。或者,您可以使用moment构造函数(如moment(record.date))将日期字符串转换为时刻。 – Nripendra 2014-11-04 01:07:53