我正在使用ngRepeat遍历一组对象。这些对象有一个字段“ teamId ”。在迭代中,我使用类似这样的过滤器来显示该字段{{object.teamId | teamName}}
,其中teamName过滤器采用一个 teamId 并返回一个实际的团队名称。
如果团队名称不是对象中的字段,而是过滤器的结果,我如何使用ngRepeatorderBy
中的过滤器按团队名称而不是团队 ID 对数组进行排序?
我正在使用ngRepeat遍历一组对象。这些对象有一个字段“ teamId ”。在迭代中,我使用类似这样的过滤器来显示该字段{{object.teamId | teamName}}
,其中teamName过滤器采用一个 teamId 并返回一个实际的团队名称。
如果团队名称不是对象中的字段,而是过滤器的结果,我如何使用ngRepeatorderBy
中的过滤器按团队名称而不是团队 ID 对数组进行排序?
你没有。您需要对数据进行预处理,以便您的对象包含团队名称属性,以便您可以根据它进行排序。过滤器只是更改数据的显示,它不会修改数据,因此 orderBy 不知道您更改的数据。
<div ng-repeat="option in options" >
{{ option | teamname }} <!-- filter changes the displayed value, not the data -->
</div>
//JS
angular.forEach($scope.options, function(index, value){ // or (value, index), I forget
$scope.options[index] = $filter('teamname',$scope.options, index+1); // (filtername, array, expression) //this is a hack and you can probably get a more efficient way to pass these params
});
//JS 这也可能有效
$scope.options = $filter('teamname',$scope.options);