这可能很简单也很愚蠢,但我似乎无法弄明白。我创建了一个ng-repeat结构,我在不同的对象上多次使用。基本上,我遍历这些对象内的数组中的元素,并且根据某些变量,我需要应用自定义orderBy,或者保留原始顺序。
所以我已经创建了那个自定义订单:
<li ng-repeat="tag in filter.tags | orderBy: customSort(filter.customSort)">
基本上,filter对象包含一个标记数组和一个布尔变量,表明是否需要应用自定义排序。在我的customSort函数中,我检查传递参数是否为true并执行该自定义排序。但如果它是假的 - 我似乎无法在该数组中以原始顺序输出标签。
我无法传递 $ index ,因为此时它始终为0,它只会成为ng-repeat标记内的索引。我不能做那样的 filter.tags.indexOf(tag),因为标签还不存在。
我有点卡住,是否有办法有条件地应用orderBy?
进一步解释: 我遍历一系列标签并打印其本地化值,其中一些标签应按其原始顺序排列,其中一些应按其本地化版本的字母顺序排序。所以我的剥离自定义排序做了这样的事情:
$scope.customSort = function(language) {
return function(tag) {
return $scope.tags.[language][tag];
}
}
答案 0 :(得分:0)
到目前为止,这是我提出的唯一解决方案,我会稍等一会儿,看看是否有人用更好的方法回答,然后才能将此标记为正确。
我必须将整个数组传递给排序函数,以及用于确定是否需要原始顺序或自定义排序的布尔变量,然后像这样使用indexOf:
$scope.customSort = function(perform, tags, language) {
return function(tag) {
if (!perform) return tags.indexOf(tag);
return $scope.tags.[language][tag];
}
}