我希望有一个ng-repeat按某个外部查找表中的值排序。
例如,假设我有一个items
列表,每个项目都有一个itemType
。我在作用域中有一个单独的itemTypePriorities
查找表,这样itemTypePriorities[someItemType]
给出了给定项类型的优先级。现在,我想按照优先顺序显示项目。我正在尝试以下方法:
<div ng-repeat="item in items | orderBy:'itemTypePriorities[item.itemType]'>
但它似乎没有用 - 我的猜测是它在item
的上下文中解释orderBy表达式,即它试图通过无意义的表达式进行排序item.itemTypePriorities[item.itemType]
。
有没有办法重写ng-repeat以使其正确运行,没有必须以任何方式修改items
或itemTypePriorities
数组?
答案 0 :(得分:1)
您当然可以使用orderBy过滤器,但我认为您需要创建一个自定义函数来订购。
例如:
<div ng-repeat="item in items | orderBy:myFunction>
myFunction在控制器的某处声明为:
$scope.myFunction = function(el){
//el is the current element under evaluation
}
并且应该返回一个将与&lt;,===和&gt;进行比较的值与另一个。在您的情况下,该功能可以是:
$scope.myFunction = function(el){
return itemTypePriorities.indexOf(el);
}
这应该有用