2015-01-27 37 views
6

Najpierw chcę wyświetlić wszystkie identyfikatory o nazwach "main i ukryć wszystkie wiersze o nazwach "review".Pokazywanie i ukrywanie wierszy tabeli w angularjs

Po drugie, gdy kliknę na jeden wiersz "main, chciałbym wyświetlić jeden wiersz "review" pod tym rzędem "main.

Trzeci krok, a gdy klikam ponownie na innym "main rzędzie, jeden "review" wiersz zostanie pokazany w ramach niniejszego "main rzędzie że kliknąłem, a pierwszy "review" wiersz powinien być ukryty.

Podsumowując, pokażę tylko jeden wiersz "review" w zależności od wiersza "main, który kliknąłem i ukryję wszystkie inne wiersze "review" dla użytkownika.

<tbody ng-repeat="(id,product) in products" ng-controller="ProductMainCtrl as main"> 
<tr id="main" ng-click="parseProductId(product.product_id)"> 
    <td>{{product.product_id}}</td> 
    <td>{{product.name}}</td> 
    <td>{{product.quantity}}</td> 
    <td>{{order.currency_code}} {{product.unit_price}}</td> 
    <td>{{order.currency_code}} {{product.unit_discount}}</td> 
    <td>{{order.currency_code}} {{product.price}}</td> 
    <td id="arrow"><a>Write A Review</a></td> 
</tr> 
<tr id="review"> 
    <td colspan="7"> 
    <span ng-include="'views/product/rating_main.html'"></span> 
    </td> 
</tr> 
</tbody> 

Czy mogę uzyskać pewne pomysły na to z kątem?

+0

Nie można mieć wielu identyfikatorów o tej samej nazwie; jednak możesz mieć wiele klas. Brzmi to, co opisujesz, nazywa się Akordeon, prawdopodobnie jest to moduł Angular, którego możesz użyć. Wiem, że Angular Bootstrap ma jeden. http://angular-ui.github.io/bootstrap/ – Robert

+0

to, czego prawdopodobnie potrzebujesz, to 'ng-repeat-start' i' ng-repeat-end'. Umożliwiłoby to umieszczenie danych w jednym wierszu i zawarcie w innym, wszystko w tym samym przedziale potomnym. Nie myśl o ID w kanciastym, modele danych napędzają manipulację DOM. Chcesz użyć 'ng-show',' ng-hide' itd. – charlietfl

+0

dzięki za twoje pomysły. – spider

Odpowiedz

9

Można dodać ng-show do swojej przeglądarki rzędu i sędziego, który, aby pokazać, w którym rząd click z $index jak:

<tbody ....> 
    ... 
    <tr id="review" ng-show'isShow == $index'> 
    <td colspan="7"> 
    <span ng-include="'views/product/rating_main.html'"></span> 
    </td> 
    </tr> 
    ... 
</tbody> 

i dodać funkcję Kliknij, aby zmienić isShow numer:

... 
<tr id="main" ng-click="parseProductId(product.product_id);changeShow($index)"> 
... 

Następnie zdefiniuj funkcję changeShow w kontrolerze:

$scope.changeShow = function(index){ 
    $scope.isShow = index; 
} 

Mam to.

Próbka here

+0

Teraz masz. Dziękuję bardzo :) – spider

+0

Dzięki! Jeśli chcesz ponownie ukryć rozwinięty wiersz, kliknij: Set isShow to -1, jeśli isShow === index – chrjs