2016-06-20 5 views
1

Ich versuche zu vermeiden, den gleichen Filter für die gleiche Sammlung mehrmals in AngularJS-Anwendung zu verwenden.Vermeiden Sie mehrfache Verwendung eines Filters in AngularJs

Was ist der richtige Weg, es zu tun:

<div ng-app="myApp" ng-controller="PeopleCtrl"> 
<ul ng-init="(person in people|filter:{show:true}) as myPeople" ng-if="myPeople.length>0"> 
    <h4>My People</h4> 
    <li ng-repeat="person in myPeople">{{person.name}}; display: {{person.show}}; 
    </ul> 
</div> 

CODE PEN

Wenn ich (person in people|filter:{show:true}) as myPeople verwende ich versuche einen Alias ​​zu verwenden, um nicht die gleichen Filter zu wiederholen {show:true} überall ...

+0

können Sie alle Filter, die Sie tun möchten, detailliert, ich sehe nur eine Filterung hier. – Walfrat

+0

Ich versuche nicht zu wiederholen '(Person in Personen | Filter: {show: true})' überall – Serge

+0

Wenn Sie die gleiche gefilterte Version einer Liste häufig zeigen müssen, ist die performanteste Möglichkeit, eine gefilterte Version der myPeople zu erstellen Array innerhalb des Controllers und enthalten * das * in Ihrer Vorlage. –

Antwort

2

Sie sollten es in etwa so machen:

<div ng-init="myPeople = (people | filter:{show:true})"> 
    <div ng-if="myPeople.length>0"> 
    <h4> My People</h4> 
    <ul> 
     <li ng-repeat="person in myPeople"> 
     {{person.name}}; age: {{person.age}}; show: {{person.show}}; 
     </li> 
    </ul> 
    </div> 
</div> 
+0

versucht, funktioniert nicht – Serge

+1

Ich bin mir ziemlich sicher, es funktioniert: http://codepen.io/anon/pen/KMgxMN?editors=1010 – dfsq

+0

Ich habe ng-init und ng-wenn auf dem gleichen Element!) ist das ein Problem? – Serge

Verwandte Themen