angularjs - tutorial - thymeleaf d3 js



angularjs filtert mehrdimensionales Objekt json (1)

Ich wollte ng-repeat verwenden, um eine nach einem Objektwert gefilterte Liste anzuzeigen. Hier ist ein Plukr von meinem Versuch https://plnrkr.co/edit/vD4UfzM4Qg7c0WGTeY18?p=preview

Der folgende gibt alle meine JSON- names wie erwartet zurück.

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

jetzt möchte ich filtern und zeigen nur die namen der "foreign_lang": "es", , die "foreign_lang": "es", wie in diesem 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"
    },
  },

Also habe ich diese Filterfunktion gemacht

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

und nannte es so.

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

Ich habe keine Konsolenfehler bekommen, aber ich habe nichts zurückgegeben.

Wie kann ich diese Sammlung richtig filtern, um nur Elemente mit 'foreign_lang', 'es' als Wert im json zurückzugeben? Sehen Sie sich den Plunkr an, um ein funktionierendes Beispiel zu sehen https://plnkr.co/edit/vD4UfzM4Qg7c0WGTeY18?p=preview


Dritter Versuch (seit die Frage überarbeitet wurde). Verwenden Sie die Filterfunktion, um jedes Objekt einzeln zu überprüfen und nur diejenigen zurückzugeben, die den Wahrheitstest bestehen.

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

Aktualisiertes Plunk - Verwenden der Filterfunktion





angularjs-filter