какое из них является лучшим решением $ rootScope. $ emit или $ scope. $ broadcast? [Дубликат]

0

Я пытаюсь вызвать событие из родительского контроллера, и дочерний контроллер должен его прослушать. Используя рамки углового события, есть два пути:

Способ 1

parentcontroller

$scope.$broadcast("eventToChild");

childController

$scope.$on("eventToChild",function({console.log("received event");})

Способ 2

parentcontroller

$rootScope.$emit("eventToChild");

childController

$rootScope.$on("eventToChild",function({console.log("received event");})

Я понимаю, что $rootscope.$emit будет вызывать только слушателей на $rootscope и мы можем остановить распространение события с помощью event.stopPropagation(), учитывая этот факт, как $scope.$broadcast $rootScope.$emit будет лучшим решением, чем $rootScope.$emit.

Какой из них является лучшим решением и почему?

Теги:
angularjs-scope

2 ответа

0

Там нет лучшей разницы в производительности между ними. Но разница в его использовании.

$ broadcast используется для трансляции события вниз и $ emit используется для испускания события вверх.

Далее, вы ошибаетесь, говоря, что $ emit работает только с $ rootScope. Он также работает с $ scope.

Для получения дополнительной информации о них см. Различия здесь.

  • 0
    пожалуйста, проверьте ответ Эдди Монжа-младшего по предоставленной вами ссылке. ** $ rootScope. $ emit ** работает только с $ rootScope
  • 0
    пожалуйста, прочитайте внимательно.
Показать ещё 4 комментария
0

Они просто работают по-другому.

Широковещательная передача идет от элементов downards, к тому, кто пытается поймать событие; в случае корнеплодов каждая область видимости ниже, поэтому каждый может поймать ее и обработать; Хотя излучение - это способ увеличения охвата ребенка. Обычно, если вы хотите инициировать событие в параметрах условия/области, которые связаны с родителем, вы будете использовать широковещательную рассылку - в то время как если вы хотите использовать его с данными о ребенке, вы будете использовать emit.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню