У меня есть директива, которая абстрагирует меню. Выбор пункта меню должен быть уведомлен его родительскому контроллеру, чтобы он мог выполнять требуемые действия. Есть несколько способов добиться этого.AngularJS, уведомление об изменении данных от директивы к его родительскому контроллеру
Передача переменной области действия от контроллера к директиве и наблюдение за изменением этой переменной. В пределах директивы измените эту переменную, чтобы указать параметр выбора.
Передайте метод обратного вызова от контроллера к директиве. Вызовите обратный вызов из директивы после изменения.
Обратите внимание на изменения в контроллере, используя $ объем. $, И уведомляет из директивы, используя сферу. $ Испускают
я не мог ясно прибыть в которой один вариант лучше. Я склоняюсь к варианту 3, поскольку он кажется более чистым, но я не уверен, что у этого есть нежелательная связь. Я хотел бы услышать мнение других, решение которого будет способствовать четкой зависимости и хорошей проверке.
UPDATE:
После прочтения предложения и мысли, я взял Вариант 2 для следующих причин:
Это совершенно очевидно, глядя в HTML о зависимости
<menu save="onSave()" filterByDate="filterByDate(date)"></menu>
Единичное тестирование очень явное и рассказать об API (интерфейсе) директивы
Оба варианта 2 и 3 в порядке. С вариантом 2 ваша зависимость явно. – Chandermani
Я бы выбрал вариант 2. Вариант 3 тоже будет прекрасен, но мне не нравится событие, как сказал Чандермани, это путь менее явный. – tanou