2016-03-18 2 views
1

Я новичок в Javascript и AngularJS. Оба кажутся мне слушателем событий. Каковы различия? Могу ли я использовать их взаимозаменяемо? Как?

ответ

4

$ scope. $ On будет захватывать события, которые являются. $ Broadcast() в области $ scope, тогда как addEventListener прослушивает любые события на странице. Они похожи, но не взаимозаменяемы.

Если вы работаете в угловом приложении, я бы определенно использовал $ scope. $, Если не требуется иное, то есть ловить события из-за угла углового приложения. Вы получите тестовую возможность, если будете писать модульные тесты, и будете искать события только из своего собственного кода, что, вероятно, является тем, что вы ищете.

1

№ Они работают на разных объектах и ​​не являются взаимозаменяемыми, хотя они очень похожи в , что они делают. Оба добавляют прослушиватель событий к объекту, который может генерировать события, но областями не являются HTMLElements (например, document), и различные события запускаются в области, а не в HTMLElements.

1

$scope.$on следует использовать везде, где это возможно. Обычно, если есть Угловой способ сделать что-то, вы должны сделать это таким образом.

$scope.$on используется совместно с $scope.$emit, который отправляет данные всем родительским контроллерам и $scope.$broadcast, который отправляет данные всем дочерним контроллерам. Это дает вам больший контроль над потоком данных через приложение. Кроме того, обработка событий внутри основного прослушивателя событий прерывает двустороннюю привязку данных.

Смежные вопросы