Ich habe eine ng-repeat welche eine Liste von divs
anzeigt und wenn ich auf eins klicke zeigt es eine weitere div
für das angeklickte Element an.ng-repeat: zeigt ein Element beim Klicken und versteckt die anderen
Dies funktionieren
<div ng-repeat="item in items">
<div ng-click="showfull = !showfull">
<div>
<h1>{{item.title}}</h1>
<p>{{item.content}}</p>
</div>
</div>
<div ng-show="showfull">
<p>{{item.info}}</p>
</div>
<hr/>
</div>
sind meine Elemente aus einer json eine Liste von Elemente geladen enthält, und jedes Element hat in diesem json einen Standard-Attribut showfull
Satz false
. Das funktioniert, aber jetzt möchte ich alle anderen Elemente in der Liste ausblenden, wenn auf ein Element geklickt wird. Ich habe so etwas wie dies tryied:
Diese nicht funktioniert
<div ng-repeat="item in items">
<div ng-click="expand(item)">
<div>
<h1>{{item.title}}</h1>
<p>{{item.content}}</p>
</div>
</div>
<div ng-show="showfull">
<p>{{item.info}}</p>
</div>
<hr/>
</div>
und in der Steuerung habe ich eine Funktion hinzugefügt:
$scope.expand = function(e) {
e.showfull = !e.showfull;
//TODO: put here a foreach logic to hide all other items
}
Aber auch ohne die foreach Logik dieses funktioniert nicht, das Element zeigt nicht den zusätzlichen Div, wenn geklickt wird. Ich habe zwei Fragen:
Ich nehme an, dies zu
item
gebührt in derexpand
Funktion oder irgendeine Art von Umfang Isolation Problem „durch Kopie übergeben“ werden, aber können Sie mir erklären, warum im Detail? GELöSTWie kann ich alle zusätzliche div anderer Elemente ausblenden, wenn ich ein Element klicken und den zusaetzliche Inhalt zu diesem Artikel zeigen? Muss ich eine Richtlinie machen? NICHT
Dank
Danke, das scheint zu funktionieren, was passiert, wenn ich das Element in der eckigen Sichtweise nicht referenziere? Angular verlinken Element nicht mit der ng-Show Aktion? – deKajoo
@deKajoo Wenn Sie nicht auf das Element verweisen, würden Sie gegen '$ scope.showfull' gehen. – Vadim
Zweite Frage: Um alle anderen Elemente zu verstecken, sollte ich' angular.forEach' in der Controller-Funktion verwenden oder gibt es einen besseren Weg ? (bearbeiten: Danke für die erste Antwort) – deKajoo