$emit はメッセージを DOM ツリーの上位に送信し、$broadcast はメッセージを下位に送信することを理解しています。
兄弟の DOM 要素間でメッセージを送信するにはどうすればよいですか?
DOM ツリーに送信しません。スコープ ツリーに送信されるため、スコープを扱うときに DOM 要素を兄弟にするという概念はありません。ただし、$emit でできることは、親に $emit を送信し、伝播を停止してから、すべての兄弟 (およびその子) がピックアップするブロードキャストを行うことです。
同じ親を持つスコープに送信するメカニズムはありません。メッセージは一意である必要があり、ほとんどのスコープはメッセージを無視するため、通常はルート スコープからブロードキャストします。ツリーのさらに上のスコープとその子孫を無視する親からブロードキャストすることもできますが、見ているスコープの兄弟だけでなく、親のすべての子孫に到達します。親がブロードキャストされたスコープでない場合は、常にメッセージを無視できます。
$scope.$parent.$broadcast('MyUniqueEventName', data);
$scope.$on('MyUniqueEventName', function(event, data) {
if ($scope.$parent !== event.targetScope) {
return;
}
// do something with data
});
私の場合、私は非常に満足しています:
$rootScope.$broadcast('my event');