angularjs filter multidimensional object json

大憨熊 提交于 2019-12-25 17:44:34

问题


I wnt to use ng-repeat to display a list filtered by an object value. Here is a plukr of my attempt https://plnkr.co/edit/vD4UfzM4Qg7c0WGTeY18?p=preview

The following returns all of my JSON names as expected.

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

now i want to filter and only show the names of the items that have "foreign_lang": "es", like in this json snippet

  {
    "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"
    },
  },

so i made this filter function

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

and called it like this.

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

I did not get any console errors but i got nothing returned.

How do I properly filter through this collection to only return items with 'foreign_lang', 'es' as a value in the json? See the plunkr to see a working example https://plnkr.co/edit/vD4UfzM4Qg7c0WGTeY18?p=preview


回答1:


Third attempt (since the question was revised). Use the filter function to check each object individually, and returning only those that pass the truth test.

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

Updated Plunk - Using Filter Function



来源:https://stackoverflow.com/questions/42213713/angularjs-filter-multidimensional-object-json

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!