我有一个角度应用,它从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的简单orderBy
方法,尽管ng-repeat
继续按预期运行。
所以,我的问题是,如果我想现在通过title
或-title
订购我的列表,怎么能实现? Angular中有什么可以实现这个目标,还是应该滚动我自己的过滤器?
修改
所以在我的模板中我想这样做:
<div ng-repeat="task in tasks | orderBy:'-title'">
<span>{{ task.title }}</span>
</div>
因此,如果代码采用第一种格式,orderBy
过滤器可以正常工作,但如果代码按第二种格式映射则不起作用。
答案 0 :(得分:0)
为什么不编写一个方法来根据给定的ID提取任务,而不是重新格式化API的响应并编写自己的转发器指令?
function getTask(id) {
for (var i = 0; i < $scope.tasks.length; i++) {
if ($scope.tasks[i].id == id)
return $scope.tasks[i];
}
}
上述任务仍将绑定到$scope.tasks
数组,因此您所做的任何属性更改都应反映在视图中。