首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NG显示/隐藏AngularJS按钮-重复

使用NG显示/隐藏AngularJS按钮-重复
EN

Stack Overflow用户
提问于 2016-07-25 09:33:57
回答 5查看 7.5K关注 0票数 6

我有一个项目列表,点击应该打开单个项目,但目前,当试图打开单个项目时,它将打开所有项目,第二次单击关闭所有项目--请有人告知我的代码哪里出错了。谢谢。

代码语言:javascript
复制
<div data-ng-repeat="item in items" layout="column">
  <div layout="row">
    <md-button class="md-primary" ng-click="toggleFilter()">Item {{$index + 1}}</md-button>
  </div>
  <div ng-hide="toggle">
    <!-- Content -->
  </div>
</div>

JS

代码语言:javascript
复制
$scope.toggle = true;
$scope.toggleFilter = function() {
  $scope.toggle = $scope.toggle === false ? true : false;
};
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-07-25 09:39:58

按以下方式编辑代码:

HTML

代码语言:javascript
复制
<div data-ng-repeat="item in items" layout="column">
  <div layout="row">
    <md-button class="md-primary" ng-click="toggleFilter(item)">Item {{$index + 1}}</md-button>
  </div>
  <div ng-hide="item.toggle">
    <!-- Content -->
  </div>
</div>

JS

代码语言:javascript
复制
$scope.toggleFilter = function(item) {
  item.toggle = !item.toggle;
};

希望有效:)

票数 14
EN

Stack Overflow用户

发布于 2016-07-25 09:44:32

ng-repeat为每个项目创建一个新的范围。每个新的作用域将从其父范围继承toggleFiltertoggle。现在,您正在切换父作用域的状态。因此,所有子作用域都得到相同的值。如果您想在子范围上切换值,只需使用this而不是$scope演示

代码语言:javascript
复制
$scope.toggleFilter = function() {
  this.toggle = !this.toggle
}
票数 4
EN

Stack Overflow用户

发布于 2016-07-25 09:38:06

在toggleFilter中添加参数,并使$scope.toggle成为数组。就像这样:

代码语言:javascript
复制
<div data-ng-repeat="item in items" layout="column">
  <div layout="row">
    <md-button class="md-primary" ng-click="toggleFilter($index)">Item {{$index + 1}}</md-button>
  </div>
  <div ng-hide="toggle[$index]">
    <!-- Content -->
  </div>
</div>

JS

代码语言:javascript
复制
$scope.toggle = [];
$scope.toggleFilter = function(inx) {
  $scope.toggle[inx] = $scope.toggle[inx] === false ? true : false;

};

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38564221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档