在ngRepeat AngularJs排序对象 [英] AngularJs sort object in ngRepeat

查看:143
本文介绍了在ngRepeat AngularJs排序对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用AngularJs,发现在一个模板订购哈希对象属性的问题。结果
我的目标是这样的:

I'm using AngularJs and found a problem in ordering properties of a hash object in a template.
My object is like:

function TestCtrl($scope){
    $scope.week = {'MONDAY': ['manuel'], 'TUESDAY': [], 'WEDNESDAY': ['valerio'], 'THURSDAY': ['manuel', 'valerio'], 'FRIDAY': []}
}

现在,当我尝试在我的模板来打印这些值:

Now, when I try to print these values in my template:

<div ng-repeat="(day, names) in week">
    <span>{{day}}</span>
    <ul> <li ng-repeat="name in names">{{name}}</li> </ul>
</div>

印天的顺序是不同的:星期五,星期一,星期四,星期二,星期三

我试着应用过滤器排序依据,但我认为它不使用对象,只是使用数组...

I tried to apply the filter orderBy but I think it doesn't work with objects, but just with arrays...

如何订购呢?

推荐答案

JS对象键获得按字母顺序排序的默认。如果你不想改变你的源对象,那么你可以使用其他数组存储在该替代的顺序和循环:

JS Object keys get sorted alphabetically by default. If you don't want to change your source object then you can use another array to store the order and loop over that instead:

function TestCtrl($scope){
    $scope.week = {
        'MONDAY': ['manuel'], 'TUESDAY': [], 
        'WEDNESDAY': ['valerio'], 'THURSDAY': ['manuel', 'valerio'],    
        'FRIDAY': []}
    $scope.weekDays = ["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY"];
}

<div ng-repeat="day in weekDays">
    <span>{{day}}</span>
    <ul> <li ng-repeat="name in week[day]">{{name}}</li> </ul>
</div>

这篇关于在ngRepeat AngularJs排序对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆