ngRepeat 中的 orderBy 使用另一个变量 属性
orderBy in ngRepeat using another variable property
是否可以仅使用 orderBy 而不向数组中的项目添加计数 属性 来根据另一个变量对一个数组中的项目进行排序?
假设我在控制器中有一个数组和一个映射:
$scope.x = [{no:1,name:"a"},
{no:2,name:"b"},
{no:3,name:"c"}];
$scope.y = { 1: [1],
2: [1,2,3],
3: [1,2] };
并且 html 将如下所示:
<div ng-repeat="i in x | orderBy: y[i.no].length">
{{i.no}}
{{ y[i.no] }}
{{ y[i.no].length }}
</div>
输出:
1 [1] 1
2 [1,2,3] 3
3 [1,2] 2
但应该是:
1 [1] 1
3 [1,2] 2
2 [1,2,3] 3
您可以使用谓词函数来指定您的条件。
试试这个:
<div ng-repeat="i in x | orderBy: findOrder">
{{i.no}}
{{ y[i.no] }}
{{ y[i.no].length }}
</div>
并且:
$scope.findOrder = function(elem){
console.log(elem.no);
return $scope.y[elem.no].length;
}
是否可以仅使用 orderBy 而不向数组中的项目添加计数 属性 来根据另一个变量对一个数组中的项目进行排序?
假设我在控制器中有一个数组和一个映射:
$scope.x = [{no:1,name:"a"},
{no:2,name:"b"},
{no:3,name:"c"}];
$scope.y = { 1: [1],
2: [1,2,3],
3: [1,2] };
并且 html 将如下所示:
<div ng-repeat="i in x | orderBy: y[i.no].length">
{{i.no}}
{{ y[i.no] }}
{{ y[i.no].length }}
</div>
输出:
1 [1] 1
2 [1,2,3] 3
3 [1,2] 2
但应该是:
1 [1] 1
3 [1,2] 2
2 [1,2,3] 3
您可以使用谓词函数来指定您的条件。
试试这个:
<div ng-repeat="i in x | orderBy: findOrder">
{{i.no}}
{{ y[i.no] }}
{{ y[i.no].length }}
</div>
并且:
$scope.findOrder = function(elem){
console.log(elem.no);
return $scope.y[elem.no].length;
}