我正在使用ng-repeat
创建行,每行都有可扩展的部分,其中显示详细信息。我在行单击时获取数据并通过两种方式绑定(bind)填充详细信息区域。但这是问题,所有详细信息部分都被指定为公共(public)范围变量。
有人可以指导我如何解决这个问题吗?
我想到的一个解决方案是维护每个细节的map
结构。但不知道这是一个好主意还是有更好的解决方案来解决这个问题
提前致谢
编辑 Angular.js 版本:1.0.8
最佳答案
我认为你的问题是你将详细信息标签的“ng-open”绑定(bind)到 ng-repeat 父范围中的 bool 值,而不是将其绑定(bind)到 ng-repeat 迭代本身的属性( ng-repeat 的每个循环都会创建实际作用域的子作用域)。 这是一个例子:
<tr ng-repeat="thing in things">
<td ng-click="showContent = !showContent">
<details id="details" ng-open="showContent">
<summary><em>Details</em></summary>
<p ng-bind="thing.info"></p>
</details>
</td>
</tr>
在重复的每个循环中,它将创建一个子范围,每个范围都将包含一个“私有(private)”showContent 属性,您的 ng-open 指令将附加到该属性。
希望这是您的问题并且对您有所帮助。
--编辑--
(当然,您必须确保“showContent”属性未在您的作用域 Controller 上声明)
关于javascript - `ng-repeat` 行中的详细信息部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24113600/