Ng-click在我的tr标签AngularJS

时间:2015-05-26 20:59:36

标签: angularjs

我正在研究一个应用程序,我似乎无法弄清楚为什么我的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>

2 个答案:

答案 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'的内容。这样它通过引用继承传递(其中布尔值是按值),并保持同步。