Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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
AngularJS:如何编写升序排序过滤器_Angularjs_Angularjs Filter - Fatal编程技术网

AngularJS:如何编写升序排序过滤器

AngularJS:如何编写升序排序过滤器,angularjs,angularjs-filter,Angularjs,Angularjs Filter,我正在学习AngularJS,并尝试编写升序排序过滤器: 这是我的html文件: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script src="../Scripts/angular.min.js"></script> <script src="../Scripts/Controllers/app.js">

我正在学习
AngularJS
,并尝试编写升序排序过滤器:

这是我的html文件:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title></title>
  <script src="../Scripts/angular.min.js"></script>
  <script src="../Scripts/Controllers/app.js"></script> 
</head>
<body ng-app="myApp">
    <ul ng-init="names = ['Peter','Anton','John']">
       <li ng-repeat="name in names | sortAscending ">
           <span>{{name}}</span>
       </li>
   </ul>
</body>
</html>

  • {{name}}
这是我的过滤器:

app.filter("sortAscending", function () {
    return function (input) {
        var result = [];
        for (var i = 0; i < input.length; i++) {
            if (input[i] > input[i + 1]) {
                result.push(input[i]);
            }
        }

        return result;
    }
});
app.filter(“排序”,函数(){
返回函数(输入){
var结果=[];
对于(变量i=0;i输入[i+1]){
结果推送(输入[i]);
}
}
返回结果;
}
});
我觉得在比较这些值时,循环中出现了一些错误

我做错了什么?

orderBy如何:

<ul ng-init="names = [{name:'Peter'}, {name:'Anton'}, {name: 'John'}]">
    <li ng-repeat="name in names | orderBy:'+name' ">
        <span>{{name}}</span>
    </li>
</ul>
  • {{name}}
在名称前面加+表示升序,或者-表示降序

参考:

编辑:正如另一个答案所建议的,请不要使用ng init来声明变量/对象。正如您在AngularJS文档中看到的,可以使用一个简单的控制器,不仅用于大多数目的,更重要的是用于练习目的。

orderBy如何:

<ul ng-init="names = [{name:'Peter'}, {name:'Anton'}, {name: 'John'}]">
    <li ng-repeat="name in names | orderBy:'+name' ">
        <span>{{name}}</span>
    </li>
</ul>
  • {{name}}
在名称前面加+表示升序,或者-表示降序

参考:

编辑:正如另一个答案所建议的,请不要使用ng init来声明变量/对象。正如您在AngularJS文档中所看到的,可以使用一个简单的控制器,不仅用于大多数目的,更重要的是用于锻炼目的。

三件事:

  • 您的筛选器未返回任何内容(缺少return语句)

  • ng init应该只用于别名,在其中声明变量不是一个好的实践。在您的示例中,应该使用ng init将过滤器应用于数组,但数组本身应该在控制器中声明

  • 您的排序算法不起作用。要对这样的简单数组进行排序,只需使用javascript sort()方法

  • 这是一个工作的plunker,修正了三点:

    • {{name}}
    编辑:我想你想把这理解为一种练习,所以我的解决方案只针对你试图解决问题的方式。和前面提到的其他方法一样,您确实可以使用orderby过滤器最终简化这一过程

    三件事:

  • 您的筛选器未返回任何内容(缺少return语句)

  • ng init应该只用于别名,在其中声明变量不是一个好的实践。在您的示例中,应该使用ng init将过滤器应用于数组,但数组本身应该在控制器中声明

  • 您的排序算法不起作用。要对这样的简单数组进行排序,只需使用javascript sort()方法

  • 这是一个工作的plunker,修正了三点:

    • {{name}}
    编辑:我想你想把这理解为一种练习,所以我的解决方案只针对你试图解决问题的方式。和前面提到的其他方法一样,您确实可以使用orderby过滤器最终简化这一过程

    你试过orderBy吗?你试过orderBy吗?