2016-08-08 22 views
1

Ich benutze Winkel 1, ich habe eine Direktive, die als ein Element namens "Speicher" zurückgegeben wird. Also wird das Speicherelement ng-repeat durch jedes Objekt in einem Array von json, das ich verwende, um alle meine Produkte zu speichern.Kann ich Argumente im HTML-Tag meines benutzerdefinierten eckigen Elements übergeben?

Dies funktioniert gut auf einer meiner Seiten, wo ich eckig durch alle Objekte wiederholen möchte. Auf einer anderen Seite möchte ich zwar die gleichen Informationen zeigen, aber nur bestimmte Produkte zeigen. Zum Beispiel, wenn der Schlüsselwert für das Feature auf "True" gesetzt ist.

Gibt es in meinem Tag eine Möglichkeit, Argumente zu übergeben, die angeben, dass ich nur die ersten beiden Elemente im Array anzeigen oder nur anzeigen möchte, wenn sie einem bestimmten Schlüsselwert entsprechen?

+0

sollten Sie Filter für diesen Fall verwenden – wirher

Antwort

2

Sie filters in Ihren ng-repeat Direktive verwenden:

<div class="list-group"> 
    <div class="list-group-item" ng-repeat="product in store.products | query:feature | limitTo:5"> 
    <h3>{{product.name}} <em class="pull-right">{{product.price | currency}} Spaces left: {{product.spots}}</em></h3> 
    </div> 
</div> 

Sie können auch Argumente zu Ihren benutzerdefinierten Richtlinien übergeben. Wo Sie Ihre Richtlinie definieren, können Sie schreiben:

return { 
     restrict: 'EA', 
     scope: { 
      max: '=', 
     }, 
     ... 
     template: ' 
     <div class="list-group"> 
      <div class="list-group-item" ng-repeat="product in store.products | query:feature | limitTo:max"> 
      <h3>{{product.name}} <em class="pull-right">{{product.price | currency}} Spaces left: {{product.spots}}</em></h3> 
      </div> 
     </div>' 
     }; 

Und jetzt können Sie schreiben:

<store max="5" /> 

Dadurch werden die ersten 5 Elemente im Array iterieren und sie nur angezeigt, wenn feature wahr ist.

+0

Das bringt mich definitiv irgendwo, aber das Problem ist, ich habe zwei Seiten, auf denen das Element verwendet wird. Das Ändern der Vorlage würde beide Seiten verändern und ich möchte nur eine davon ändern, um zu zeigen, ob die Funktion wahr ist. Wäre es am besten, einfach eine andere Vorlage für die zweite Seite zu erstellen? – natedaswas

+0

Aktualisierte meine Antwort ... lass es mich wissen, wenn das dich auf den richtigen Weg bringt. –

+0

Ausgezeichnet, und ich fand den Abschnitt der Dokumentation für genau das, worüber Sie sprechen. Vielen Dank! – natedaswas