angularjs ng-click的奇怪行为

时间:2014-10-16 09:17:17

标签: angularjs angularjs-ng-click

我有以下代码,它是指令的模板:

<div ng-click="showDetails=true" ng-init="showDetails=false">
    <div ng-show="showDetails">
        <div ng-click="showDetails=false">X</div>
    </div>
</div>

当我点击外部div时,内部div显示,但是当我点击&#39; X&#39;时,它不会消失。当我重写代码时,使用&#39; ng-mouseover&#39;而不是&#39; ng-click&#39;,它工作正常(即首次点击使div显示,将鼠标悬停在&#39; X&#39;,使其消失):

<div ng-click="showDetails=true" ng-init="showDetails=false">
    <div ng-show="showDetails">
        <div ng-mouseover="showDetails=false">X</div>
    </div>
</div>

任何人都知道“点击”的问题可能是什么?不工作? 谢谢

1 个答案:

答案 0 :(得分:3)

您的点击事件正在传播,因此在将showDetails设置为false后,它会再次在最外层的div中将其设置为true!试试这个:

<div ng-click="showDetails=true" ng-init="showDetails=false">
    <div ng-show="showDetails">
        <div ng-click="showDetails=false;$event.stopPropagation()">X</div>
    </div>
</div>