javascript - ng-transclude 会停止 Angular.js 中的事件传播吗?

标签 javascript angularjs events angularjs-directive transclusion

当我尝试通过 $scope 对象将事件从我的指令发送到嵌套指令时,就会出现问题。例如。 $scope.broadcast('event') 子指令不接收事件,但是当我使用 $rootScope 对象时它起作用,例如$rootScope.broadcast('事件')

TL;DR:为什么这不起作用:http://plnkr.co/edit/27qYiHOilpVABSwMI0Fb?p=preview当这有效时:http://plnkr.co/edit/o91yFKnQzHp7edUTTkJE?p=preview

编辑:在 angular.js 1.3.0 及更高版本中,这不再是问题!!!

最佳答案

您的指令使用 ng-transclude。来自文档:

In a typical setup the widget creates an isolate scope, but the transclusion is not a child, but a sibling of the isolate scope.

这是您的范围层次结构:

Scope hierarchy

  • 003 是指令one的独立作用域
  • 004 是两个元素所在的包含范围
  • 005是第一个指令的范围
  • 006是第一个指令two
  • 的包含范围

正如您所见,two 的作用域不是 one 的子作用域。

关于javascript - ng-transclude 会停止 Angular.js 中的事件传播吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23211234/

相关文章:

javascript - EmberJS 需要操作键

javascript - 如何使用 Lodash 创建嵌套 div

javascript - 我希望在默认音频播放器中播放完歌曲后出现模式弹出声音,任何人都可以帮助我编写代码

javascript - 无法访问 JavaScript 对象属性

angularjs - Angular没有显示响应数据

wpf - 如何处理 WPF DataTemplate 中的事件?

javascript - 在文本字段中输入时,自动格式化为 hh :mm from right to left

javascript - 如何将 'select' 选项正确绑定(bind)到 API 调用?

javascript - 存在于另一个数组中的过滤器选项

events - 如何定义一个事件来更改具有不同事件的元素?