2016-06-10 14 views
0
<div ng-repeat="item in items | limitTo:$parent.limit=($parent.limit||5)"> 
    ... 
    <a ng-if="$last" ng-bind="$parent.limit===Infinity ? 'Read Less':'Read More'" ng-click="$parent.limit=$parent.limit===Infinity?5:Infinity"></a> 
</div> 

So ist das anfängliche Limit nur 5 Elemente, und klicken Sie auf den Link ändert den Text zwischen mehr lesen/weniger lesen. Aber ngRepeat nimmt die Änderung nicht auf und fügt Elemente hinzu oder entfernt sie. Ich möchte ngRepeat aktualisieren, wenn ich $parent.limit Variable ändern. Ich möchte den Controller möglichst nicht verwenden.AngularJs ngRepeat aktualisiert nicht bei Änderung der Variablen

+0

Mit $ Eltern ist ein riesiger Code Geruch. Rufen Sie stattdessen Methoden Ihres Bereichs auf und legen Sie die Logik dort hin. ng-repeat und ng-wenn beide ihren eigenen Umfang definieren. –

+0

@JBNizet Dies wird mein Plan B. Ich habe eine Menge von ng-Wiederholungen in unserer App zu aktualisieren, und es wäre nett zu vermeiden, den Controller für solch eine einfache Aufgabe zu verwenden. Vor allem, weil meine Arbeit und Kollegen darauf beharren, alles zu testen und überall dasselbe zu kopieren und einzufügen, ist es genauso aufregend, den Variablennamen zu ändern, als wenn man Farbe trocken betrachtet. – Matt

Antwort

0

Die ng-repeat Direktive ich glaube, schafft einen anderen Bereich darunter für seine Kinder-Elemente. Also dann würden Sie nicht mit dem gleichen Elternteil sprechen, das im <div> Element bezeichnet wird. In Ihrem Tag <a> müssen Sie möglicherweise mit dem übergeordneten Bereich des übergeordneten Elements sprechen.

So versuchen $parent.$parent anstelle von nur $parent innerhalb Ihrer Anker-Tag innerhalb Ihrer ng-repeat.

Natürlich Dadurch werden die AngularJS Götter machen eine Träne vergießen, so empfehle ich einen Controller oder die Schaffung eines Verfahrens in Ihrem ng-click Aufruf, der für seine Vorlage an den Stromregler propagieren bis werden. Dann können Sie diese gesamte Logik außerhalb Ihrer Vorlage verschieben.

+0

Nun, die AngularJS-Götter gewinnen heute. Schade, dass sie nicht von ihrem Himmel herunterkommen und helfen, die zusätzliche Arbeit mit mir zu machen. $ parent. $ parent wird nicht aktualisiert, aber es wird ein Controller verwendet. – Matt