2015-01-27 3 views
6

Во-первых, я хотел бы показать весь идентификатор с именем "main строк и скрыть весь идентификатор с именем "review" строк.Показать и скрыть строки таблицы в angularjs

Во-вторых, когда я нажимаю на одну строку "main, я бы хотел показать номер "review" рядом с этим "main row.

Третий шаг, а потом, когда я снова нажмите на другой "main подряд, один "review" строка будет отображаться под этой "main строки, я щелкнул, и первый "review" строка должна быть скрыта.

В заключение я покажу только одну строку "review" в зависимости от строки, которую я нажал, и спрятал все остальные "review" строк пользователю.

<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> 

Могу ли я получить некоторые идеи для этого с угловыми?

+0

Вы не можете иметь несколько идентификаторов с тем же именем; однако вы можете иметь несколько классов. Звучит то, что вы описываете, называется Аккордеон, возможно, есть модуль Angular, который вы можете использовать. Я знаю, что у Angular Bootstrap есть один. http://angular-ui.github.io/bootstrap/ – Robert

+0

то, что вы, вероятно, хотите, это 'ng-repeat-start' и' ng-repeat-end'. Это позволит вам помещать данные в одну строку и включать в другую, все в пределах одной и той же области. Не думайте, что ID в угловом режиме, модели данных управляют DOM-манипуляцией. Вы хотите использовать 'ng-show',' ng-hide' и т. Д. – charlietfl

+0

спасибо за ваши идеи – spider

ответ

9

можно добавить ng-show к вашей строке обзора и судьи, которые, чтобы показать, на какой строке вашего нажмите с $index как:

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

и добавить функцию Нажмите, чтобы изменить isShow номер:

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

Затем определите changeShow Функция в контроллере:

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

Получил это.

Образец here

+0

Теперь это получилось. Большое вам спасибо :) – spider

+0

Спасибо! Если вы хотите снова скрыть расширенную строку при нажатии: Set isShow до -1, если isShow === index – chrjs

Смежные вопросы