AngularJS事件传播 - 兄弟姐妹?

时间:2014-09-05 16:36:03

标签: angularjs events broadcast emit

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

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

3 个答案:

答案 0 :(得分:14)

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

答案 1 :(得分:10)

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

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

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

答案 2 :(得分:0)

就我而言,我非常满意:

$rootScope.$broadcast('my event');