【问题标题】:angularjs filter multidimensional object jsonangularjs过滤多维对象json
【发布时间】:2017-02-13 21:16:37
【问题描述】:

我不想使用 ng-repeat 来显示按对象值过滤的列表。这是我的尝试https://plnkr.co/edit/vD4UfzM4Qg7c0WGTeY18?p=preview

以下内容按预期返回我的所有 JSON names

<li ng-repeat="item in collection_data">{{navitem.name}}</li>

现在我想过滤并仅显示具有"foreign_lang": "es", 的项目的名称,如此 json sn-p

  {
    "id": "ddb06ba2-6348-4d45-9e63-a6fa3632e5c2",
    "created_at": "2015-10-12T18:34:15.668Z",
    "updated_at": "2016-04-14T15:55:37.433Z",
    "custom_attributes": {
      "Display Name": "Activos en Español",
      "foreign_lang": "es",
      "display_boxes": "false"
    },
  },

所以我做了这个过滤功能

$scope.filterByDisplay = function() {
  $filter('filter')($scope.collection_data, ['foreign_lang', 'es']);
}

并这样称呼它。

<li ng-repeat="item in collection_data"  | filter: filterByDisplay>{{navitem.name}}</li>

我没有收到任何控制台错误,但没有返回任何内容。

如何正确过滤此集合以仅返回带有 'foreign_lang', 'es' 作为 json 值的项目?查看 plunkr 以查看工作示例 https://plnkr.co/edit/vD4UfzM4Qg7c0WGTeY18?p=preview

【问题讨论】:

标签: angularjs angularjs-scope angularjs-ng-repeat angularjs-filter


【解决方案1】:

第三次尝试(因为修改了问题)。使用过滤器功能单独检查每个对象,并仅返回通过真值测试的对象。

$scope.filterByDisplay = function(value) {
  return (value.content)
      && (value.content.custom_attributes) 
      && (value.content.custom_attributes.foreign_lang === "es");
}

Updated Plunk - Using Filter Function

【讨论】:

    猜你喜欢
    • 2017-12-06
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 2015-10-26
    • 2016-07-10
    • 1970-01-01
    相关资源
    最近更新 更多