我正在使用ng-repeat
创建行,每行都有可展开的部分,其中显示了详细信息。我在行单击上获取数据并通过双向绑定填充详细信息区域。但问题在于,所有细节部分都会出价到共同的范围变量。
有人可以指导我如何解决这个问题吗?
我的一个解决方案是为每个细节维护map
结构。但不知道这是一个好主意还是有更好的解决方案来解决这个问题
提前致谢
修改 Angular.js版本:1.0.8
答案 0 :(得分:2)
我认为您的问题是您将详细信息标记的“ng-open”绑定到ng-repeat的父范围中的布尔值,而不是将其绑定到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>
在重复的每个循环中,它将创建一个子范围,每个范围将包含一个“私有”showContent属性,您的ng-open指令将附加到该属性。
希望这是你的问题,这对你有帮助。
- 编辑 -
(当然,您必须确保未在范围控制器上声明“showContent”属性)