2016-11-08 7 views
0

Ich versuche, einen Filter auf ein Unterelement meines JSON-Objekts anzuwenden.Winkelfilter verschachtelte Eigenschaft löschen

Es funktioniert gut, aber wenn ich meinen Filter löschen, werden die Eigenschaften ohne mein Unterelement nicht angezeigt.

Können Sie mir helfen, dies zu tun?

Ich kann die JSON-Struktur ändern der Code JS:

'use strict'; 
angular.module('filterExample', []) 
    .controller('filterController', ['$scope', function($scope) { 
    $scope.amis = 
     [{nom:'John', tel:'01-23-45-67-89', age:10, test:{id:3}}, 
     {nom:'Mary', tel:'02-34-56-78-91', age:19}, 
     {nom:'Mike', tel:'03-45-67-89-12', age:21, test:{id:5}}, 
     {nom:'Adam', tel:'04-56-78-91-23', age:35}, 
     {nom:'Julie', tel:'05-67-89-12-34', age:29, test:{id:7}}]; 
    }]); 

HTLM Code:

<head> 
    <meta charset="UTF-8" /> 
    <title>Exemple 2 du filtre filter</title> 
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script> 
    <script src="script.js"></script> 
    </head> 

    <body ng-app="filterExample"> 
    <div ng-controller="filterController"> 
     <h4>Objet pour le prédicat</h4> 
     <p> 
     N'importe quel champ <i>(search.$)</i> : <input ng-model="search.$"> <br/> 
     Seulement à partir du nom <i>(search.nom)</i> : <input ng-model="search.nom"><br/> 
     Seulement à partir de l'âge <i>(search.age)</i> : <input ng-model="search.age"> <br/> 
     Seulement à partir du téléphone <i>(search.tel)</i> : <input ng-model="search.tel"><br/> 
     Seulement à partir test <i>(search.test.id)</i> : <input ng-model="search.test.id"><br/> 
     </p> 
     <table> 
     <tbody> 
      <tr> 
      <th>Nom</th> 
      <th>Âge</th> 
      <th>Téléphone</th> 
      </tr> 
      <tr ng-repeat="ami in amis | filter:search"> 
      <td>{{ami.nom}}</td> 
      <td>{{ami.age}}</td> 
      <td>{{ami.tel}}</td> 
      </tr> 
     </tbody> 
     </table> 
    </div> 
    </body> 

</html> 

hier ein Beispiel: https://plnkr.co/edit/7RlfmKU2UkM13z0ogwmh?p=preview

Antwort

0

Der Grund, warum Sie sehen, dass, sobald Sie den ID-Filter "löschen", der Wert der ID ist immer noch eine leere Zeichenfolge und der Filter versucht immer noch, die test.id-Eigenschaft zu entsprechen, und betrachtet daher nur Datensätze mit dieser Eigenschaft. Um es wirklich zu löschen, müssen Sie die Unset-Eigenschaft .test festlegen. Sie können dies tun, indem Sie eine Überwachung für den ID-Filter hinzufügen und die Aufhebung aufheben, wenn es eine leere Zeichenfolge ist:

+0

vielen Dank. Es funktioniert gut –

+0

Gern geschehen. Bitte markieren Sie die Antwort als akzeptiert. – GPicazo