Próbuję znaleźć sposób na rozwinięcie i zwinięcie za pomocą kątowego js. Nie byłem w stanie znaleźć eleganckiego sposobu na to, bez manipulowania obiektami domowymi w kontrolerze (co nie jest kanciastą drogą). Obecnie mam dobry sposób na zrobienie tego w przypadku rozwijania i zwijania jednej warstwy. Jednak kiedy zaczynam zagnieżdżać, rzeczy stają się skomplikowane i nie działają tak, jak tego chcę (rozwijanie i zwijanie wielu obszarów, gdy nie powinny być). Problem polega na tym, że nie wiem, jak wysłać unikalny identyfikator za pomocą ng-click, aby rozwinąć/zwinąć właściwą treść. Powinienem wspomnieć, że te elementy są w powtórzeniu ng, więc mogę koniecznie dostosować parametry przesyłane.Rozwiń i zwiń z kątowym js
Udało mi się użyć tego jsfiddle, aby pomóc mi rozwinąć i zwinąć jedną warstwę do pracy. Jest to jednak sposób przełączania i chcę, aby użytkownik mógł zachować to, co rozszerzone, a jednocześnie rozszerzyć inne. Więc to, co zrobiłem, aby to naprawić, to użycie tablicy i za każdym razem, gdy coś zostanie kliknięte, indeks tego klikniętego elementu zostanie dodany do tablicy, a klasa rozwinięta. Gdy użytkownik kliknął ponownie, indeks został usunięty z tablicy, a obszar został zwinięty.
Innym sposobem okazało się, że można to zrobić za pomocą dyrektyw. Ale tak naprawdę nie mogę znaleźć żadnego przykładu, który pozwoliłby mi zrozumieć, jak działają dyrektywy. Nie wiem, jak zacząć, jeśli chodzi o pisanie dyrektyw.
Mój obecny zestaw up to:
function Dexspander($scope) {
$scope.ExpandArray = [];
//Push or pop necessary elements for tracking
$scope.DespopulatArray = function (identifier, element) {
if (_.indexOf($scope.ExpandArray, identifier + element) != -1) {
$scope.ExpandArray.splice(_.indexOf($scope.ExpandArray, identifier + element), 1);
} else {
$scope.ExpandArray.push(identifier + element);
}
}
//Change class of necessary elements
$scope.Dexspand = function (identifier, element) {
if (_.indexOf($scope.ExpandArray, identifier + element) != -1) {
return "expand";
} else {
return "collapse";
}
}
}
<div class="user-header" ng-repeat="user in users">
<h1 ng-click="DespopulatArray('user', $index)">Expand</h1>
</div>
<div class="user-content" ng:class="Dexspand('user', $index)">
<div class="content">
<div class="user-information">
<div class="info-header">
<h1 ng-click="DespopulatArray('info', $index)>Some Information</h1>
</div>
<div class="info-contents" ng:class="Dexspand('info', $index)">
stuff stuff stuff stuff...
</div>
</div>
</div>
</div>
Problem z tej konfiguracji jest to, że jeśli mam div dominujących rozszerzona i te obie mają coś pod nimi, aby rozwinąć, klikając poszerzyć tekst rozszerzy je w oba obszary, ponieważ nie są unikalne.
można umieścić przykład to się na plunker? Wtedy mógłbym ci pomóc z dyrektywą. użyj tego jako podstawy: http://plnkr.co/edit/gist:3662656 –