我知道$ emit在DOM树上发送消息,$ broadcast发送消息。
如何在兄弟DOM元素之间发送消息 - 我该怎么做?
答案 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');