我确信我的面前必须有一个简单的解决方案,但是如果我能找到它就该死的。
我通过各种排序选项对大型ng-repeat进行排序,因此我传递了一系列排序选项。用户还可以选择数据的排序方式。
我可以按A-Z排序,但出于某种原因,反之(Z-A)没有按预期工作。
这是一个小提琴http://jsfiddle.net/Tk39P/4/
我正在做的就像我在其他Angular应用程序中使用的许多其他排序功能一样:
return -result.whatever;
那么,我做错了什么? :) 干杯
答案 0 :(得分:0)
答案 1 :(得分:0)
您应该使用orderBy
,reverse
的第三个参数。特别是对于return -string
没有意义的字符串。 (如果你是严格单一的字母,单个字母的字母,你可以做return "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">
答案 2 :(得分:0)
根据此更改您的代码位 $ scope.orderBy =&#39;价格 - 低 - 高&#39 ;; $ scope.predicate =&#39;价格&#39 ;; $ 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 =&#34; orderByOptions()&#34;
<select data-ng-change="orderByOptions()" class="order-by" data-ng-model="orderBy" id="orderBy" data-ng-show="results.length > 0">
检查 JSFiddle
您也可以参考此文档AngularJS orderBy