Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度A-Z反向排序_Javascript_Angularjs_Sorting - Fatal编程技术网

Javascript 角度A-Z反向排序

Javascript 角度A-Z反向排序,javascript,angularjs,sorting,Javascript,Angularjs,Sorting,我确信这件事在我面前一定有一个简单的解决办法,但如果我能找到的话,那就该死了 我通过各种排序选项对一个大的ng repeat进行排序,因此我传递了一个排序选项数组。用户还可以选择数据的排序方式 我可以按A-Z进行排序,但由于某种原因,(Z-A)的反方向不能按预期工作 这是一把小提琴 我所做的一切与我在其他Angular应用程序中使用的许多其他排序功能相同: return -result.whatever; 那么,我做错了什么?:) 干杯问题是如果result.letter是一个(非空)字符串

我确信这件事在我面前一定有一个简单的解决办法,但如果我能找到的话,那就该死了

我通过各种排序选项对一个大的ng repeat进行排序,因此我传递了一个排序选项数组。用户还可以选择数据的排序方式

我可以按A-Z进行排序,但由于某种原因,(Z-A)的反方向不能按预期工作

这是一把小提琴

我所做的一切与我在其他Angular应用程序中使用的许多其他排序功能相同:

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">