【问题标题】:How to Order JSON data in the controller using AngularJS $filter如何使用 AngularJS $filter 在控制器中对 JSON 数据进行排序
【发布时间】:2017-02-15 13:46:42
【问题描述】:

我在控制器中有一个如下所示的数据数组

$scope.sampleArray=[{
    'title': 'SampleTitleOne',
    'description': 'SampleDescriptionOne',
    'category': 'Saving'
},
{
    'title': 'SampleTitleTwo',
    'description': 'SampleDescriptionTwo',
    'category': 'Saving'
},
{
    'title': 'SampleTitle3',
    'description': 'SampleDescription3',
    'category': 'Current'
},
{
    'title': 'SampleTitleIV',
    'description': 'SampleDescriptionIV',
    'category': 'Current'
},
{
    'title': 'SampleTitleFive',
    'description': 'SampleDescriptionFive',
    'category': 'Group'
},
{
    'title': 'SampleTitleFive',
    'description': 'SampleDescriptionFive',
    'category': 'Group'
},
{
    'title': 'SampleTitleFive',
    'description': 'SampleDescriptionFive',
    'category': 'Mixed'
},
{
    'title': 'SampleTitleFive',
    'description': 'SampleDescriptionFive',
    'category': 'Other'
}];

我根据用户输入订购了上述数组。假设用户输入数组是

$scope.order = ['Other', 'Group', 'Mixed', 'Saving', 'Current'];

应用过滤器后,输出应如下所示

$scope.sampleArray=[{
    'title': 'SampleTitleFive',
    'description': 'SampleDescriptionFive',
    'category': 'Other'
},
{
    'title': 'SampleTitleFive',
    'description': 'SampleDescriptionFive',
    'category': 'Group'
},
{
    'title': 'SampleTitleFive',
    'description': 'SampleDescriptionFive',
    'category': 'Group'
},

{
    'title': 'SampleTitleFive',
    'description': 'SampleDescriptionFive',
    'category': 'Mixed'
},
{
    'title': 'SampleTitleOne',
    'description': 'SampleDescriptionOne',
    'category': 'Saving'
},
{
    'title': 'SampleTitleTwo',
    'description': 'SampleDescriptionTwo',
    'category': 'Saving'
},
{
    'title': 'SampleTitle3',
    'description': 'SampleDescription3',
    'category': 'Current'
},
{
    'title': 'SampleTitleIV',
    'description': 'SampleDescriptionIV',
    'category': 'Current'
}];

有没有办法应用 angular $filter 来实现这一点?

【问题讨论】:

  • 您想在 ng-repeat 中订购还是仅在变量中订购?
  • 在变量本身中

标签: javascript angularjs json angularjs-filter


【解决方案1】:

使用 orderBy 过滤器

$scope.sampleArray = $filter('orderBy')($scope.sampleArray, function(item) { return $scope.order.indexOf(item.category);});

【讨论】:

  • 谢谢!!如果我更改 $scope.order 变量,例如 $scope.order = ['Other', 'Group', 'Mixed']; ,我该如何过滤?在这种情况下,$scope.sampleArray 应该只包含数组中的“其他”、“组”和“混合”相关记录
  • 然后添加 $scope.samleArray = $filter('filter')($scope.sampleArray,function(item) { return $scope.order.indexOf(item.category) !== -1 ; }) 排序前
  • 我会做类似 $scope.originalData = [....]; $scope.$watchCollection('order', function(newOrder) { var filtersData = $filter('filter')($scope.originalData ,function(item) { return $scope.order.indexOf(item.category) != = -1; }); $scope.filteredOrderedData = $filter('orderBy')(filteredData, function(item) { return $scope.order.indexOf(item.category);}) })
【解决方案2】:

您应该检查 orderBy 过滤器并以某种方式更改其中的某些内容。

【讨论】:

    猜你喜欢
    • 2015-11-13
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    相关资源
    最近更新 更多