我有一个 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?我需要做一个指令吗? 未解决
谢谢