【发布时间】:2014-10-16 15:34:30
【问题描述】:
我有一个 ng-repeat,它显示 divs 的列表,当我单击一个时,它会为单击的项目显示一个附加的 div。
这是有效的
<div ng-repeat="item in items">
<div ng-click="showfull = !showfull">
<div>
<h1>{{item.title}}</h1>
<p>{{item.content}}</p>
</div>
</div>
<div ng-show="showfull">
<p>{{item.info}}</p>
</div>
<hr/>
</div>
我的项目是从包含项目列表的 json 加载的,每个项目在此 json 中都有一个默认属性 showfull 设置为 false。这是有效的,但现在我想在单击项目时隐藏列表中的所有其他项目。我尝试过这样的事情:
这不起作用
<div ng-repeat="item in items">
<div ng-click="expand(item)">
<div>
<h1>{{item.title}}</h1>
<p>{{item.content}}</p>
</div>
</div>
<div ng-show="showfull">
<p>{{item.info}}</p>
</div>
<hr/>
</div>
在控制器中我添加了一个功能:
$scope.expand = function(e) {
e.showfull = !e.showfull;
//TODO: put here a foreach logic to hide all other items
}
但即使没有 foreach 逻辑,这也不起作用,单击时该项目不会显示附加 div。我有两个问题:
我想这是由于
item在expand函数中被“复制传递”或某种范围隔离问题,但您能详细解释一下原因吗? 已解决当我单击一个项目并显示该项目的附加内容时,如何隐藏其他项目的所有附加 div?我需要做一个指令吗? 未解决
谢谢
【问题讨论】:
标签: javascript angularjs ng-repeat angularjs-ng-show