2016-10-14 2 views
0
<table> 
    <tr> 
     <th>Primary Key</th> 
     <th>descriptionShort</th> 
     <th>descriptionLong</th> 
</tr> 
<tr ng-repeat="terReason in data | filter :({descriptionLong:searchTerm}||{descriptionShort:searchTerm} )"> 
     <td>terReason.primaryKey</td> 
     <td>terReason.descriptionShort</td> 
     <td>terReason.descriptionLong</td> 
</tr> 
</table> 

Ich habe diese Tabelle. Wie kann ich machen, dass der Filter nur auf descriptionLong oder descriptionShort und nicht in primaryKey funktioniert. Zu diesem Zeitpunkt arbeitet der Filter nur auf descriptionLong. DATA sceernshotFilter nur 2 von 3 Spalten angularjs

+0

Haben Sie [diese] (http://stackoverflow.com/a/18792135/4045532) gesehen? – Corporalis

+0

ja ich habe es gesehen. Ich habe vergessen zu sagen, dass ich mit SearchTerm auf beiden Spalten suchen möchte. Nicht mit searchTerm1 oder searchTerm2. –

Antwort

1

Ich nehme an, das ist, was Sie wollen:

<input ng-model="searchTerm"> 
<table> 
    <tr> 
     <th>Primary Key</th> 
     <th>descriptionShort</th> 
     <th>descriptionLong</th> 
    </tr> 
    <tr ng-repeat="terReason in data | filter : myFilter"> 
     <td>{{ terReason.primaryKey }}</td> 
     <td>{{ terReason.descriptionShort }}</td> 
     <td>{{ terReason.descriptionLong }}</td> 
    </tr> 
</table> 

JS:

$scope.data = [ 
{ 
    primaryKey: 0, 
    descriptionShort: 'descriptionShort ZERO', 
    descriptionLong: 'descriptionLong descriptionLong descriptionLong ZERO' 
}, 
{ 
    primaryKey: 1, 
    descriptionShort: 'descriptionShort ONE', 
    descriptionLong: 'descriptionLong descriptionLong descriptionLong ONE' 
}, 
{ 
    primaryKey: 2, 
    descriptionShort: 'descriptionShort TWO', 
    descriptionLong: 'descriptionLong descriptionLong descriptionLong TWO' 
}, 
{ 
    primaryKey: 3, 
    descriptionShort: 'descriptionShort THREE', 
    descriptionLong: 'descriptionLong descriptionLong descriptionLong THREE' 
} 
]; 

$scope.myFilter = function myFilter (value) { 
    return !$scope.searchTerm || Object.keys(value).some(function (key) { 
    return key !== 'primaryKey' && value[key].search($scope.searchTerm) !== -1; 
    }); 
} 

Pluner: http://plnkr.co/edit/VMcs064WWbGraULyXQTU?p=preview versuchen durch oder suchen - nichts angezeigt, es Sucht nicht nach Primärschlüssel.

+0

Vielen Dank für Ihre Antwort. Wenn ich dies für jeden Primärschlüssel in Millionen von Daten tun müsste, wäre das zu viel Code dafür. –

+0

Wenn ich Ihrer Antwort folge, sucht es nur in der BeschreibungLang, nicht in der BeschreibungKurz –

+0

Ich werde meine Antwort in einer halben Stunde oder so aktualisieren (müssen jetzt gehen), danke @EndritDemaj für das Zeigen, ich werde Filterfunktion verwenden, die primaryKey-Schlüssel auslassen wird von seiner Suche – Andriy

0
<tr ng-repeat="terReason in data | filter :filter1 | filter :filter2 "> 
     <td>terReason.primaryKey</td> 
     <td>terReason.descriptionShort</td> 
     <td>terReason.descriptionLong</td> 
</tr> 

Warum nicht mehrere Filter verwenden?

+0

auf diese Weise Filter sind * ANDED * anstelle von * ORED * – Andriy