当前位置: 首页 > 面试题库 >

ng-repeat中的按对象顺序排序

诸葛柏
2023-03-14
问题内容

如何按键排序为整数?

我有以下对象;

 $scope.data = {
    "0": { data: "ZERO" },
    "1": { data: "ONE" },
    "2": { data: "TWO"  },
    "3": { data: "TREE" },
    "5": { data: "FIVE" },
    "6": { data: "SIX" },
    "10":{ data:  "TEN" },
    "11": { data: "ELEVEN" },
    "12": { data: "TWELVE" },
    "13": { data: "THIRTEEN" },
    "20": { data: "TWENTY"}
 }

HTML:

<div ng-repeat="(key,value) in data">

当前的输出顺序是 1,10,11,12,13,14,2,20,3,4,5,6

但是我想要 1,2,3,4,5,6,10,11,12,13,14,20

| orderBy:key

不要为我工作。

有任何想法吗?

谢谢!


问题答案:

一种选择是使用中间过滤器。

代码和代码段

var app = angular.module('app', []);

app.controller('MainCtrl', function($scope) {

  $scope.template = {
    "0": { data: "ZERO" },
    "1": { data: "ONE" },
    "2": { data: "TWO"  },
    "3": { data: "TREE" },
    "5": { data: "FIVE" },
    "6": { data: "SIX" },
    "10":{ data:  "TEN" },
    "11": { data: "ELEVEN" },
    "12": { data: "TWELVE" },
    "13": { data: "THIRTEEN" },
    "20": { data: "TWENTY"}
  }

});

app.filter('toArray', function() { return function(obj) {
    if (!(obj instanceof Object)) return obj;
    return _.map(obj, function(val, key) {
        return Object.defineProperty(val, '$key', {__proto__: null, value: key});
    });
}});


<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore.js"></script>

<body ng-app="app" ng-controller="MainCtrl">
    <div ng-repeat="(key, value) in template| toArray | orderBy:key">{{key}} : {{value.$key}} : {{value.data}}</div>
<body>

注意:

上面的过滤器需要Underscore.js,如果不使用它,可以重写过滤器。



 类似资料:
  • 问题内容: 我有此数据: 当我通过ng- repeat按id或按年龄排序时,它会将数字排序为文本。由于我找不到它写的任何地方的问题,所以我猜我的代码有问题。我创建了这个小提琴:http : //jsfiddle.net/vsbGH/1/很抱歉,该模板,但jsfiddle不允许在html框中使用。无论如何,这是加载和排序数据的代码: 这是模板的ng-repeat部分: 非常感谢您能帮助我理解为什么数

  • 我必须创建一个方法,根据电子邮件按字母顺序排序对象的ArrayList,然后打印排序后的数组。我对它排序有困难的部分。我已经研究过它,并尝试使用,但这对我不起作用。我需要一种叫做比较器的东西,但不知道它是如何工作的。我必须使用这些,或者像气泡排序或插入排序之类的东西可以用于这种事情吗? 这是我目前掌握的代码:

  • 问题内容: 我必须创建一种方法,该方法根据电子邮件按字母顺序对对象的 ArrayList 进行排序,然后打印排序后的数组。我在排序时遇到的麻烦。我已经对其进行了研究并尝试使用,但这对我不起作用。我当时是需要一个称为比较器的东西,但无法弄清楚它是如何工作的。我将不得不使用这些东西吗?还是像气泡排序或插入排序这样的东西可以用于这种事情? 这是我到目前为止的代码: 问题答案: 排序部分可以通过实现cus

  • 问题内容: 我有一个HTML表格,想通过单击表格标题(在ctrl中)对记录(在ctrl中)进行排序, 任何人都可以解释为什么这样做有效: 那不是: 这是记录的代码: 我的表格中有58列,因此遍历表格标题会更好。 问题答案: 正如David所建议的,这可能与范围有关。由于ngRepeat创建了一个新的作用域,因此您需要为每个列标题设置和。 确保您在同一范围内修改值的一种方法是在该范围内创建一个函数,

  • 问题内容: 我有一组显示一定数量的磁贴,具体取决于用户选择的选项。我现在想通过显示的任何数字来实现排序。 下面的代码显示了我是如何实现的(通过在父卡范围内获取/设置一个值)。现在,由于orderBy函数接受一个字符串,因此我尝试在卡范围内设置一个名为curOptionValue的变量并以此进行排序,但似乎不起作用。 因此,问题就变成了,如何创建自定义排序功能? 和控制器: 问题答案: 实际上,过滤

  • 问题内容: 我有这个: 和[电影]数组。如何按名称的字母顺序对数组进行排序?我试过了: 和 但这不起作用,因为我没有访问电影的名称属性。 问题答案: 在传递给的闭包中,比较要排序的属性。像这样: 或以下要绕过案例的案例: 旁注: 通常,只有类型以大写字母开头;我建议使用and ,而不是and 。 例如,在操场上: 将按顺序 Swift5更新