2017-05-25 1 views
1

Ich bin neu in eckigen js. Ich bin nicht in der Lage herauszufinden, wie Filter funktioniert nur auf den Namen in Objekt nicht auf dem Telefonschlüssel im Objekt.Wenn wir nur Schlüsselwort in ng-Modell verwenden, wird es sowohl Name und Telefon in das Objekt im Bereich während definiert Im Fall von keyword.name wird nur der Name herausgefiltert.Ich bin nicht in der Lage herauszufinden, wie Filter funktioniert, wenn wir "keyword.name" in NG-Modell verwenden und in Filter verwenden wir "filter: keyword"

<script> 

    var app = angular.module("app" , []); 
    app.controller("controller" ,['$scope' , function($scope){ 

     $scope.answer = 1+2; 
     $scope.object=[ 

     {name:'John', phone:'555-1276'}, 
     {name:'Mary', phone:'800-BIG-MARY'}, 
     {name:'Mike', phone:'555-4321'}, 
     {name:'Adam', phone:'555-5678'}, 
     {name:'Julie', phone:'555-8765'}, 
     {name:'Juliette', phone:'555-5678'}] 

    }]); 

</script> 

<div ng-app = "app" ng-controller="controller" > 

    <input type="text" ng-model="keyword.name" /> 

    <table> 
     <thead> 
      <th>Name</th> 
      <th>Phone</th> 
     </thead> 
     <tr ng-repeat = "item in object | filter: keyword" > 

      <td> {{item.name}} </td> 
      <td> {{item.phone}} </td> 

     </tr> 

    </table> 



    </div>  



</body> 

Antwort

0

Wenn Sie nur auf Keyword-basierte Filter, die Ihr ng-Modell ist, dann standardmäßig Winkel fügt eine besondere Eigenschaft Name, der gegen jede Eigenschaft übereinstimmt. Standardmäßig ist es $. Die Filterung nach Schlüsselwörtern wie ng-model funktioniert also genauso wie die Filterung nach Schlüsselwort. $. Wenn Sie jedoch eine Eigenschaft an das Schlüsselwort anhängen, wird es den speziellen Namen und die Filter der angularen Standardwerte überschreiben, basierend auf Ihrem neuen Schlüsselwert.

https://docs.angularjs.org/api/ng/filter/filter

+0

Dies bedeutet, dass wenn ng-Modell = "Schlüsselwort" dann für eckige wird es "Filter: keywrod. $" Oder "ng-Modell = Stichwort. $"? Eigentlich bin ich verwirrt mit jedem neuen Zpter in Winkel js –

+0

Ich denke für eckig, wird es "Filter: Keyword. $". – Vivz

+0

aber was ist die Logik dahinter? Kannst du es erklären? –

0

Hier Sie vorbei Objekt (Schlüsselwort) als Ausdruck in Filter aus dem Array auszuwählen. Sie haben nur eine Eigenschaft des Objekts keyword.name deklariert. Sie müssen Filter: Schlüsselwort als Filter sehen: {Name: "Dieser Wert wird item.name"} sein. Dies gibt die Array-Elemente nur mit einem Namen zurück.

zum Beispiel, wenn Sie hatten ng-model = "keyword.dance". dann muss filter sehen: schlüsselwort als filter: {tanz: "dieser wert wird item.dance sein"}. Da sie hier nicht übereinstimmen, erhalten Sie ein leeres Ergebnis.

+0

eigentlich Filter: Stichwort gibt gültiges Ergebnis. Ich verstehe, dass Filter: {Object} kann auch das gleiche Ergebnis geben. Überprüfen Sie zum Beispiel https://docs.angularjs.org/api/ng/filter/filter –

Verwandte Themen