AngularJS事件传播 - 兄弟姐妹?

cor*_*ore 11 events broadcast emit angularjs

我知道$ emit在DOM树上发送消息,$ broadcast发送消息.

如何在兄弟DOM元素之间发送消息 - 我该怎么做?

Mat*_*erg 14

它不会将其发送到DOM树.它将它发送到作用域树,因此在处理作用域时没有兄弟DOM元素的概念.你可以用$ emit做什么是$将它发送给父母,停止传播,然后广播所有兄弟姐妹将接收的(以及他们的孩子)


Jas*_*aat 10

没有机制可以发送到具有相同父级的范围.通常,您将从根作用域广播,因为您的消息应该是唯一的,大多数作用域都会忽略它们.您可以从父节点广播,该节点应该忽略树及其后代上方的范围,但它仍然会汇集到父节点的所有后代,而不仅仅是您正在查看的范围的兄弟节点.如果您的父母不是广播的范围,您可以随时忽略该消息:

$scope.$parent.$broadcast('MyUniqueEventName', data);

$scope.$on('MyUniqueEventName', function(event, data) {
    if ($scope.$parent !== event.targetScope) {
        return;
    }
    // do something with data
});
Run Code Online (Sandbox Code Playgroud)