【发布时间】:2015-08-01 14:46:46
【问题描述】:
这可能既简单又愚蠢,但我似乎无法弄清楚。我创建了一个 ng-repeat 结构,我在不同的对象上多次使用它。基本上,我遍历这些对象内的数组中的元素,并根据某些变量,我需要应用自定义 orderBy,或者将其保留为原始顺序。
所以我创建了这样的自定义 orderBy:
<li ng-repeat="tag in filter.tags | orderBy: customSort(filter.customSort)">
基本上,过滤器对象包含标签数组和一个布尔变量,用于说明是否需要应用自定义排序。在我的 customSort 函数中,我检查传递的参数是否为真并执行该自定义排序。但如果它是错误的 - 我似乎无法在该数组中以原始顺序输出标签。
我不能通过 $index 因为此时它始终为 0,它只会成为该 ng-repeat 标记内的索引。我不能这样做 filter.tags.indexOf(tag) 因为标签还不存在。
我有点卡住了,有没有办法有条件地申请 orderBy?
进一步说明: 我遍历一组标签并打印它们的本地化值,其中一些标签应该按照它们的原始顺序,有些应该在它们的本地化版本中按字母顺序排列。所以我剥离的自定义排序是这样的:
$scope.customSort = function(language) {
return function(tag) {
return $scope.tags.[language][tag];
}
}
【问题讨论】:
-
应该不需要这个功能。显示一些示例数据和
filter.customSort的值以及customSort()的作用。不完全清楚你要做什么 -
在问题末尾添加了更多详细信息。
-
@pokrishka This 应该会有所帮助。
-
只需将$index传递给函数$scope.customSort = function(language, $index),如果另一个为false则返回。
-
@Vidul 太好了,这似乎是我需要的。明天会试一试,由于某种原因,我昨天在谷歌上搜索几乎完全相同的标题时没有遇到这个线程。
标签: javascript arrays angularjs