当使用date()格式时,AngularJS的order不能工作



OrderBy:'date'工作正常,但不幸的是,当添加编辑 date()

时,它不能正确排序。
<tr ng-repeat="expense in filteredlist = (expenses | filter:filterlist) | pagination: currentPage : numPerPage | orderBy:'date'">

演示:http://codepen.io/anon/pen/VLRRpq

您的问题是将旧日期作为string进行比较,而添加的新日期是Date对象。

将所有旧日期转换为日期对象是解决这个问题的一种方法:

$scope.expenses = [/* your data */];
$scope.expenses.forEach(function(expense){ 
    expense.date = new Date(expense.date); 
});

(Codepen updated: http://codepen.io/anon/pen/jPJJGV)

反之也可以-在保存新费用时将日期转换为(格式正确的)字符串:

$scope.addExpense = function () {
    $scope.newexpense.date =  $scope.newexpense.date.toISOString();
    /* The rest of your creating code */
}

(代码依赖更新以显示此方法:http://codepen.io/anon/pen/oXVVoJ)

以上路径的选择将取决于您的情况;你必须考虑的因素,如你如何使用数据(即,你需要对数据执行类似日期的操作吗?然后使用第一种解决方案),服务器如何期望它(服务器是否需要isostring ?如果是,使用第二种解决方案),等等。

但这两种方法在更新后的Codepen解决方案中都有效。

初始日期是一个等字符串,而编辑后的日期是一个javascript日期对象,它被转换为字符串(由于某种原因,添加了引号)。我通过在你的保存功能中添加toIsoString()更新了你的笔。见http://codepen.io/rsids/pen/VLRRMR?editors=101

最新更新