2013-07-10 70 views
0

我有一個angularjs應用程序,它使用隔離範圍的指令。這個指令的一個不希望的副作用是連接到同一個元素的事件處理程序不再觸發。這Plunkr說明:角度事件衝突

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

在app.js,如果你註釋掉以下行的mouseenter,鼠標離開和DBLCLICK事件處理程序將開始開火,相關用戶操作:

scope: { data: '=source' }, 

燦任何人都可以解釋這種效果嗎?這是一個錯誤,還是設計?如何使控制器上的事件處理程序以我想要的方式啓動。

回答

1

您設置指令的方式會創建隔離範圍,該範圍不會從父範圍繼承,因此對指令元素不可見。

一種方式來解決這將是該指令移動到一個子元素,這樣

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

看到這個plunker

+0

完美!非常感謝。 –