我正在研究一个应用程序,我似乎无法弄清楚为什么我的ng-click仅在我的(单个)tr标签内部工作,但是一旦我将它放入另一个tr标签就停止工作。请记住,在我在第一个tr标签中使用ng-repeat之前它正在工作。这是我的代码的样子,任何建议都会有很大的帮助!
<table>
<tbody>
<tr>
<td ng-click="commentOpen = !commentOpen">
<div class="iconsize">Comment Closed</div>
</td>
<td ng-click="switchOpen = !switchOpen">
<div class="iconsize">Switch Closed</div>
</td>
</tr>
<tr>
<td>
<div ng-show="commentOpen == true">
<textarea>Comment Open</textarea>
</div>
<div ng-show="switchOpen == true">
<p>Switch On</p>
</div>
</td>
</tr>
</tbody>
</table>
答案 0 :(得分:0)
我在标签上有ng-repeat,导致我的ng-click无法触发。我最终将我的ng-repeat移动到tbody并且ng-click和ng-show再次开始工作。
答案 1 :(得分:0)
ngRepeat
为其子节点创建新的范围,通常看起来它正在访问相同的范围,因为这个新范围继承自其父节点。
意思是,commentOpen
实际上指的是错误范围内的属性。
以下是三种可能的解决方法:
1)controller as
,并始终引用您之后的名称控制器
2)$parent.commentOpen
(不要这样做!当你筑巢时会变得非常混乱)
3)您可以使用对象(例如commentOpen
)代替switchOpen
和$scope.openControls = { comment: false, switch: false }
,然后在td标记中编写类似ng-click='openControls.comment = !openControls.comment'
的内容。这样它通过引用继承传递(其中布尔值是按值),并保持同步。