javascript - Angularjs - 如何显示特定的 div onclick 一个特定的链接并隐藏以前的 div with ng repeat- like tabs

标签 javascript html css angularjs

这里我有 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>&nbsp;&nbsp;&nbsp;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/

相关文章:

javascript - 在javascript中的文本之间切换时如何添加淡入和淡出

javascript - 按属性名称对 JavaScript 对象进行排序

c# - window.external 上的无参数方法在使用 typeof 检查时被调用

html - CSS 代码不适用于 chrome 和 Firefox,但适用于 IE

javascript - 如何将元素放置在轴上(以完美贴合)?

javascript - AES 在 cryptojs 中加密并在 python Crypto.Cipher 中解密

javascript - XML 读取代码在我的服务器上工作,但在我的客户端服务器上不工作

javascript - 单击时的 HTML/CSS 按钮更改为输入字段和提交按钮

html - 如果进度条值为 0,则不要在右侧添加边框

html - 为什么我的网站在使用所有 bootstrap 4 框架后没有响应