Angularjs orderBy filter 无法正确过滤日期
Angularjs orderBy filter does not filter dates correctly
我在 angularjs orderBy filter 方面遇到了问题。我正在尝试按日期升序或降序对项目列表进行排序。
这就是我的列表的样子
...
<li ng-repeat="issue in content | myStatusFilter : selectedStatuses | orderBy : 'date' : selectedOption" class="toggle-list__row">
<issue data="issue" />
</li>
...
内容是一个数组,内容中的每个问题都有一个日期,此日期保存为字符串。当所选选项为真时,这就是我得到的
- 第三期 - 31.01.2015
- 第二期 - 21.05.2015
- 第4期 - 10.06.2015
- 问题 1 - 04.05.2014 ->实际上应该是列表中的第一个
当所选选项为假时,这是输出
- 问题 1 - 04.05.2014 - 应该是最后一个
- 第4期 - 10.06.2015
- 第二期 - 21.05.2015
- 第三期 - 31.01.2015
你能帮我,告诉我错误在哪里,我该如何解决这个问题。
提前感谢
你的日期是字符串,而不是正确的javascript日期对象。 既然你说你不能在服务器上解决这个问题,你至少可以在控制器或角度服务中解决这个问题。
无论您在哪里获得包含日期的对象,都可以遍历这些对象并将它们转换为实际日期,例如:
$http.get('something')
.then(function(result) {
result.forEach(function(item) {
item.date = new Date(item.date.replace( /('d{2}).('d{2}).('d{4})/, "$2/$1/$3")
});
});
您可以按
过滤器将函数传递给订单。在该函数中,将字符串转换为日期:
$scope.myDateOrderFunction = function(item) {
var parts = item.date.split('.');
return new Date(parts[2], parts[1], parts[0]);
};
然后你可以从视图中调用它:
<li ng-repeat="issue in content | myStatusFilter : selectedStatuses | orderBy : myDateOrderFunction : selectedOption" class="toggle-list__row">
<issue data="issue" />
</li>
您的日期按字母顺序排序,要么将它们设为 Date 对象,要么将它们存储为"yyyy.mm.dd"
这是一个例子(注意,最初不是我写的,但我已经更新了)
<div ng-app>
<div ng:controller="Main">
<div ng:repeat="item in items | orderBy:'date'">{{$index}}: {{item.date | date}}</div>
</div>
</div>
function Main($scope) {
$scope.items = [
{date: new Date('12/23/2013')},
{date: new Date('12/23/2011')},
{date: new Date('12/23/2010')},
{date: new Date('12/23/2015')}
];
}
如果你的日期来自后端,你需要编写一个服务/工厂来获取这些,那么你会有类似$scope.issues = IssueService.getIssues()
的东西。这需要返回一个数组。
相关文章:
- ui网格日期单元格过滤器,过滤日期格式导致显示错误的日期
- 如何从Wijmo过滤flexgrid中的日期
- 过滤日期范围 angularjs 时出错
- AngularJS过滤格式化的日期
- 在JavaScript中,按日期和之后的名称过滤数组
- 如何在 Angular js 中按日期过滤数据
- JavaScript 智能日期过滤
- 按输入日期过滤 ng 重复
- 拉拉维尔角度如何过滤碳串上的日期
- Dojo 网格:将过滤条件发送到服务器,具有有效日期
- 如何使用角度js按月和年正确过滤日期
- 酒窝.js使用日期范围过滤 X 轴
- 角度JS过滤日期
- ng 表过滤毫秒日期数据
- angular - 过滤开始日期和结束日期在所选月份和年份范围内的所有对象
- 如何使用php和mysql过滤高图表中的日期
- 如何使用AngularJS过滤日期范围
- 如何使用JS/Jquery过滤日期和JSon数据
- 使用angularjs过滤日期时出现ReferenceError
- Angularjs orderBy filter 无法正确过滤日期