12

$emit はメッセージを DOM ツリーの上位に送信し、$broadcast はメッセージを下位に送信することを理解しています。

兄弟の DOM 要素間でメッセージを送信するにはどうすればよいですか?

4

3 に答える 3

15

DOM ツリーに送信しません。スコープ ツリーに送信されるため、スコープを扱うときに DOM 要素を兄弟にするという概念はありません。ただし、$emit でできることは、親に $emit を送信し、伝播を停止してから、すべての兄弟 (およびその子) がピックアップするブロードキャストを行うことです。

于 2014-09-05T17:21:59.560 に答える
11

同じ親を持つスコープに送信するメカニズムはありません。メッセージは一意である必要があり、ほとんどのスコープはメッセージを無視するため、通常はルート スコープからブロードキャストします。ツリーのさらに上のスコープとその子孫を無視する親からブロードキャストすることもできますが、見ているスコープの兄弟だけでなく、親のすべての子孫に到達します。親がブロードキャストされたスコープでない場合は、常にメッセージを無視できます。

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

$scope.$on('MyUniqueEventName', function(event, data) {
    if ($scope.$parent !== event.targetScope) {
        return;
    }
    // do something with data
});
于 2014-09-05T17:38:56.547 に答える
0

私の場合、私は非常に満足しています:

$rootScope.$broadcast('my event');
于 2016-09-14T11:32:09.877 に答える