Angularjs 按属性的角度顺序对象

Angularjs 按属性的角度顺序对象,angularjs,angularjs-ng-repeat,Angularjs,Angularjs Ng Repeat,我有一个angular应用程序,它使用API端点的json。json数据是这样到达的: 任务: $scope.tasks = [ {id:23, title:'foo'}, {id:448, title:'bar'} ] 但为了方便访问角度对象中的数据,我将对象映射为,这样我可以得到如下结果: $scope.tasks = { 23:{id: 23, title:'foo'}, 448:{id:23, title:'foo'} } 这允许我拉出task实例,并仅使用其id修改任务实例 这样做

我有一个angular应用程序,它使用API端点的
json
json
数据是这样到达的:

任务:

$scope.tasks = [ {id:23, title:'foo'}, {id:448, title:'bar'} ]
但为了方便访问角度对象中的数据,我将对象映射为,这样我可以得到如下结果:

$scope.tasks = { 23:{id: 23, title:'foo'}, 448:{id:23, title:'foo'} }
这允许我拉出
task
实例,并仅使用其
id
修改任务实例

这样做的结果是,我失去了简单的
orderBy
Angular方法,尽管
ng repeat
继续按预期工作

因此,我的问题是,如果我现在想按
标题
-title
对列表进行排序,如何实现这一点?在角度上是否有什么可以实现这一点,或者我应该使用自己的过滤器

编辑

因此,在我的模板中,我想这样做:

<div ng-repeat="task in tasks | orderBy:'-title'">
    <span>{{ task.title }}</span>
</div>

{{task.title}}

因此,
orderBy
过滤器在代码为第一种格式时有效,但在代码映射为第二种格式时不起作用。

为什么不编写一个方法,根据给定的ID提取任务,而不是重新格式化API的响应并编写自己的中继器指令

function getTask(id) {
    for (var i = 0; i < $scope.tasks.length; i++) {
        if ($scope.tasks[i].id == id)
            return $scope.tasks[i];
     }
}
函数getTask(id){ 对于(变量i=0;i<$scope.tasks.length;i++){ if($scope.tasks[i].id==id) 返回$scope.tasks[i]; } }
上述任务仍将绑定到
$scope.tasks
数组,因此您所做的任何属性更改都应反映在视图中。

请发布代码或处理您的问题。它将帮助我们添加模板代码,这就是问题所在。我决定映射对象,以便可以轻松地更新、删除对象。我想避免每次发生这种情况时都必须迭代对象数组。@DarwinTech--我明白你的观点,但不管你是否要滚动自己的过滤器和顺序,迭代都必须进行。但是,如果要对对象进行排序,这个线程可能会帮你解决问题:是的,经过一番考虑,我决定采纳你的建议,放弃对象映射。所以,耶!我有
orderBy
回来了!如果你想提供一个答案,我可以接受,尽管它可能会混淆OP。