まず、"main
行という名前のすべてのIDを表示し、"review"
行という名前のすべてのIDを非表示にします。
次に、1つの"main
行をクリックすると、この"review"
行の下に1つの"main
行が表示されます。
3番目のステップ、そして別の"main
行をもう一度クリックすると、クリックしたこの"review"
行の下に1つの"main
行が表示され、最初の"review"
行が表示されます。隠されます。
結論として、クリックした"review"
行に応じて"main
行を1つだけ表示し、他のすべての"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>
Angularでそのためのアイデアをいくつか得ることができますか?
レビュー行に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;
}
とった。
サンプル ここ