Ответ 1
Функция $watch
используется для просмотра переменных в области. Наследование наложения позволяет также просматривать родительские переменные области охвата, так что это определенно способ пойти на ваш случай использования.
Как вы правильно сказали, $on
используется для просмотра событий, которые вы можете $broadcast
для дочерних областей или $emit
для родительских областей. Это дает вам гораздо больше контроля, но при кодировании может возникнуть больше ошибок, поскольку вы можете получить обновление переменной области с точки, которую вы не отслеживаете и забываете уведомить слушателей.
Вы все еще можете использовать события, когда вы не наследуете переменные области. Но будьте осторожны, чтобы не загрязнять большой объем, использование сервисов может быть вариантом там, потому что вы сразу видите, будет ли оно введено или нет.
Так как директива получает область, в которой она находится (или наследуется от нее), я бы сказал, что $watch
здесь намного более чистый вариант.
Если вы хотите иметь изолированную область действия в своей директиве, вы можете передавать аргументы в качестве атрибутов и $observe
их.