2016-07-13 8 views
3

ich die Standard-Suche in meiner AngularJS App implementiert haben, ist der Code wie folgt:Implementierung Suche in AngularJS: default Weise

<div> 
<input type="text" ng-model="searchKeyword" placeholder="Search records..."> 
<div class="checkbox" ng-repeat="record in records | filter: searchKeyword"> 
<label class="ms-pl-xs"> 
    <input type="checkbox">{{record.value}}&nbsp;[{{record.count}}] 
</label> 
</div> 

Das Problem, das ich bin hier mit Blick ist, geschieht nehme an, jemanden zu feuern up ein Schlüsselwort, das nicht in den Datensätzen enthalten ist, die wiederholt werden. Ich möchte, dass eine Nachricht erscheint, in der steht: "Nichts gefunden" oder was auch immer.

Wie implementiere ich diese Logik? Ich habe verschiedene Artikel und einige Fragen hier durchgegangen, konnte diesbezüglich nichts finden. Wie sehe ich dafür, ob die Länge der gesuchten Begriffe null ist, damit ich ng-wenn das Ding und die Nachricht anzeigen kann? Vielen Dank!

+1

Mögliche Duplikat http://stackoverflow.com/questions/12340095/angularjs-ng-repeat-handle-empty-list-case –

+1

Nein, es ist kein Duplikat .. OP will nicht Überprüfen Sie die Array-Länge der Datensätze, aber die gefilterte Array-Länge ... – MarcoS

+0

@MarcoS Richtig, das ist die zweithöchste Antwort in der verknüpften Frage. –

Antwort

2

Wenn Sie Angular 1.3+ verwenden, können Sie ein alias verwenden:

<div> 
    <input type="text" ng-model="searchKeyword" placeholder="Search records..." /> 
    <div class="checkbox" ng-repeat="record in records | filter: searchKeyword as found"> 
    <label class="ms-pl-xs"> 
     <input type="checkbox">{{record.value}}&nbsp;[{{record.count}}] 
    </label> 
    </div> 
    <div ng-if="found === 0"> 
    Nothing found 
    </div> 
</div> 

Wenn Sie stattdessen eine ältere Angular verwenden müssen, können Sie das Ergebnis des Filters zu einem neuen Array zuweisen, und dann es überprüfen Länge:

<div> 
    <input type="text" ng-model="searchKeyword" placeholder="Search records..." /> 
    <div class="checkbox" ng-repeat="record in filteredRecords = (records | filter: searchKeyword)"> 
    <label class="ms-pl-xs"> 
     <input type="checkbox">{{record.value}}&nbsp;[{{record.count}}] 
    </label> 
    </div> 
    <div ng-if="filteredRecords.length === 0"> 
    Nothing found 
    </div> 
</div> 
+0

Die erste Lösung lässt die Datensätze nicht kommen, und die zweite (die lässt die Datensätze wiederholen), erfüllt aber nicht die Anforderung. :( – r0nn13

+0

Ich teste gerade Ihren Code ... – MarcoS

+0

Sicher, danke btw, ich habe heute eine neue Sache gelernt. +1! :) – r0nn13

Verwandte Themen