1

OrderBy:'date'工作正常,但不幸的是,添加编辑时它没有正确排序date()

<tr ng-repeat="expense in filteredlist = (expenses | filter:filterlist) | pagination: currentPage : numPerPage | orderBy:'date'">

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

4

2 回答 2

1

您的问题是旧日期被比较为字符串,而添加的新日期是 Date 对象。

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

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

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

反之亦然 - 在节省新费用时将日期转换为(格式正确)字符串:

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

(Codepen 更新以显示此方法:http ://codepen.io/anon/pen/oXVVoJ )

上述路径之间的选择将取决于您的情况;您必须考虑诸如您如何使用数据的因素(即您是否需要对数据执行类似日期的操作?然后使用第一个解决方案),服务器的预期方式(服务器是否需要 ISOStrings?如果是,请使用第二种解决方案)等。

但两者都明显适用于更新的 Codepen 解决方案。

于 2015-08-11T13:45:05.387 回答
1

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

于 2015-08-11T13:46:55.167 回答