这里我有3个链接,当我单击一个链接时,显示特定的div,再次单击下一个div时,显示特定的div,但是这里我每次都需要隐藏下一个链接的上一个div。这里的链接和div是例如,当我单击“ Click-1”时,应显示“ name1”,再次单击“ Click-2”时,应仅显示“ name2”,而“ name1”应隐藏...等等。这是下面的代码
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<div class="maindiv" ng-app="myApp" ng-controller="myCtrl">
<ul>
<li ng-repeat="x in data"><span ng-click="showDetails($index,0)" class="id">Click-{{x.id}}</span> sssssssssssssss<span ng-show="div_[$index+'_0']" class="name">{{x.name}}</span></li>
</ul>
</div>
var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope) {
$scope.div_=[];
$scope.showDetails = function(index,row){
$scope.div_[index+'_'+row]= true;
}
$scope.data=
[{
"name": "name1",
"id": "1"
},
{
"name": "name2",
"id": "2"
},
{
"name": "name3",
"id": "3"
}
]
});
ul li{
list-style-type:none;
cursor:pointer;
}
ul{
margin:0;
}
.maindiv{
position:relative;
}
.name{
position: absolute;
left: 97px;
background: #fff;
border: 1px solid;
width: 61px;
height: 23px;
}
答案 0 :(得分:0)
一种方法是将单击的项目传递给控制器并存储为活动项目。您可以对链接中的ng-class
等使用相同的方法来设置活动类
然后在ng-show
中查看当前项目是否为已存储的活动项目
var data = [{"name":"name1","id":"1"},{"name":"name2","id":"2"},{"name":"name3","id":"3"}];
var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope) {
$scope.data = data;
$scope.setActiveItem = function(item){
$scope.activeItem = item;
}
// show first on page load
$scope.activeItem = data[0];
});
li { padding:10px}
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div class="maindiv" ng-app="myApp" ng-controller="myCtrl">
<ul>
<li ng-repeat="x in data" >
<span ng-click="setActiveItem(x)" class="id">Click-{{x.id}}</span>
</li>
</ul>
<div ng-repeat="x in data" ng-show="activeItem==x">{{x | json}}</div>
</div>