2016-05-05 7 views
0

Ich zeige den ng-repeat Inhalt in zwei Spalten an.ng-repeat innerhalb von ng-repeat-filters funktioniert nicht

diesem Code funktioniert:

 <div class=storerow ng-repeat="store in stores track by $index" ng-if="$index%2==0"> 
      <div ng-repeat="i in [$index,$index+1]" ng-if="stores[i]!=null" class="ngrepeatstore"> 
        <div class="image-container" style="background-image: url({{stores[i].image}})" ng-click="tileClicked({{stores[i].id}})"> 
        </div> 
     </div> 

Allerdings, wenn ich eine filter- hinzufügen bricht es die NG wiederholen und keine Inhalte angezeigt:

 <div class=storerow ng-repeat="store in stores track by $index" ng-if="$index%2==0"> 
      <div ng-repeat="i in [$index,$index+1] | filter: greaterThan('order', 0) | orderBy:'order'" ng-if="stores[i]!=null" class="ngrepeatstore"> 
        <div class="image-container" style="background-image: url({{stores[i].image}})" ng-click="tileClicked({{stores[i].id}})"> 
        </div> 
     </div> 

die Js für greaterThan

$scope.greaterThan = function(prop, val){ 
    return function(item){ 
     return item[prop] > val; 
    }} 

Ich habe versucht, den Filter der ersten ng-Wiederholung hinzuzufügen - aber das funktioniert nicht, wie es gerade th anwendet e filter zum Gesamtinhalt (dh wenn nur ein Element groß ist, dann 0, zeigt es alle Elemente an - nicht nur die, die größer als 0 sind).

+0

Versuchen Sie, den Filter "orderBy" zu entfernen, nur um zu isolieren, wenn die Ursache vom Filter "greaterThan()" stammt. Können wir Ihren "greaterThan()" - Code sehen oder können Sie eine Beispielgeige einrichten? – Steve

+0

Mein groessererTan Code wurde hinzugefügt. Ich habe den Filter "orderBy" entfernt und es wird immer noch kein Inhalt angezeigt. – Ycon

Antwort

0

Das ist, weil Sie Angular tatsächlich sagen, die Eigenschaft order auf [$index, $index + 1], ein Array von zwei Ganzzahlen zu filtern, was keinen Sinn macht.

I.E. Mit Ihrem Teilnehmer, der index.prop > val vergleicht, was Sie wirklich tun, wird index['order'] > someValue vergleichen.

Dieser Plunker zeigt: http://plnkr.co/edit/FkSrmZuuK4B1ToGNgAnq?p=preview Sie müssen filter:greaterThan(prop, val) bis zum übergeordneten ng-repeat verschieben. Nur dort wird dein Filter funktionieren.

+0

Dies zeigt nicht die Daten in zwei Spalten an, da ich es brauche UND die Reihenfolge hat keine Auswirkungen – Ycon

+0

Ich demonstriere nur den Fehler in Ihrem Filter. Ich weiß nicht, wie Ihre Daten aussehen und was Sie erreichen möchten. Sie müssen den Rest für sich selbst herausfinden. – Kyle

+0

Die Daten sehen so aus {image: "grün", Reihenfolge: 2}, {image: "blau", Reihenfolge: 3}, {image: "gelb", Reihenfolge: 1} – Ycon