Javascript 角度A-Z反向排序
我确信这件事在我面前一定有一个简单的解决办法,但如果我能找到的话,那就该死了 我通过各种排序选项对一个大的ng repeat进行排序,因此我传递了一个排序选项数组。用户还可以选择数据的排序方式 我可以按A-Z进行排序,但由于某种原因,(Z-A)的反方向不能按预期工作 这是一把小提琴 我所做的一切与我在其他Angular应用程序中使用的许多其他排序功能相同:Javascript 角度A-Z反向排序,javascript,angularjs,sorting,Javascript,Angularjs,Sorting,我确信这件事在我面前一定有一个简单的解决办法,但如果我能找到的话,那就该死了 我通过各种排序选项对一个大的ng repeat进行排序,因此我传递了一个排序选项数组。用户还可以选择数据的排序方式 我可以按A-Z进行排序,但由于某种原因,(Z-A)的反方向不能按预期工作 这是一把小提琴 我所做的一切与我在其他Angular应用程序中使用的许多其他排序功能相同: return -result.whatever; 那么,我做错了什么?:) 干杯问题是如果result.letter是一个(非空)字符串
return -result.whatever;
那么,我做错了什么?:)
干杯问题是如果
result.letter
是一个(非空)字符串
是NaN
然后,你可以使用
-result.letter.charCodeAt(0);
您应该使用第三个参数来
orderBy
,reverse
。特别是对于返回-string
没有意义的字符串。(如果您是严格意义上的单字母表、单大小写字母,您可以返回“Z”.charCodeAt(0)-string.charCodeAt(index)
,但它相当难看……那么如果string
不是一个单字母呢?)
所以只需$watch(“orderBy”)
并相应地设置范围变量$scope.reverse
。将其用作:
<li data-ng-repeat="result in results
| orderBy: [orderByOptions, orderByPriceLowToHigh]:reverse track by $index">
Fiddle:根据此命令更改代码位 $scope.orderBy='价格低-高'; $scope.predicate='price'; $scope.reverse=true
$scope.orderByOptions = function (result) {
if ($scope.orderBy == 'price-high-low') {
$scope.predicate='price';
$scope.reverse=false;
}
else if ($scope.orderBy == 'letter-az') {
$scope.predicate='letter';
$scope.reverse=false;
}
else if ($scope.orderBy == 'letter-za') {
$scope.predicate='letter';
$scope.reverse=true;
}
else
{
$scope.predicate='price';
$scope.reverse=true;
}
};
HTML
Chnage data ng change=“orderByOptions()”
选中
您也可以参考此文档谢谢。我现在不在工作,所以我会尝试把这个放到项目中。这很有效,谢谢。另一个答案也有效,它的$scope声明更少,所以我“我倾向于用这个。我将尝试将两者设置为正确的…谢谢。它们不会是一个空字符串,而是一个较长的字符串。我只是以单个字母为例。明天我会在项目中尝试这个。谢谢如果字符串长度超过1个字符,那么我的答案将不起作用
$scope.orderByOptions = function (result) {
if ($scope.orderBy == 'price-high-low') {
$scope.predicate='price';
$scope.reverse=false;
}
else if ($scope.orderBy == 'letter-az') {
$scope.predicate='letter';
$scope.reverse=false;
}
else if ($scope.orderBy == 'letter-za') {
$scope.predicate='letter';
$scope.reverse=true;
}
else
{
$scope.predicate='price';
$scope.reverse=true;
}
};
<select data-ng-change="orderByOptions()" class="order-by" data-ng-model="orderBy" id="orderBy" data-ng-show="results.length > 0">