0

我有一个 angularjs 应用程序,它使用具有隔离范围的指令。该指令的一个不良副作用是连接到同一元素的事件处理程序不再触发。这个 Plunkr 说明了:

http://embed.plnkr.co/aG3X8uCGxQmnM1dJaQmJ/preview

在 app.js 中,如果您注释掉以下行,mouseenter、mouseleave 和 dblclick 事件处理程序将开始触发相关的用户操作:

scope: { data: '=source' },

请问谁能解释一下这个效果?这是一个错误,还是设计使然?如何使控制器上的事件处理程序以我想要的方式触发。

4

1 回答 1

1

您设置指令的方式会创建隔离范围,该范围不会从父范围继承,因此指令元素不可见。

解决它的一种方法是将指令移动到这样的子元素上

<div ng-dblclick="dblclick()" ng-mouseenter="mouseenter()" ng-mouseleave="mouseleave()">
      <span my-directive source="getData()">Some content</span>
    </div>

看到这个笨蛋

于 2013-07-10T13:34:20.180 回答