这里我有 3 个链接,当我点击一个链接时,特定的 div 显示,当我再次点击下一个 div 时,特定的 div 显示,但在这里我需要隐藏前一个 div onclick 每次点击下一个链接。这里链接和 div 是来自 ng repeat.For ex - 当我点击'Click-1'时'name1'应该显示,当我再次点击'Click-2'时只有'name2'应该显示并且'name1'应该隐藏......等等。这是下面的代码
HTML
<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;
}
最佳答案
一种方法是将点击的元素传递给 Controller 并存储为事件元素。您可以对链接中的 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>
关于javascript - Angularjs - 如何显示特定的 div onclick 一个特定的链接并隐藏以前的 div with ng repeat- like tabs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55540777/