Передача одной директивы с кучей других во время выполнения

#angularjs #runtime #communication #directive

#angularjs #время выполнения #Информационные материалы #директива

Вопрос:

Я создал элемент управления директивой «A». На странице будет несколько таких директив. На странице есть другой элемент управления «B», который должен взаимодействовать с директивами типа «A», но только по одной за раз, т. Е. Тот, Который выбран (например, воспроизведение / остановка видео в этом элементе управления). Поскольку я новичок в мире angularjs, я не совсем уверен, возможно ли это сделать и как это должно быть сделано. Я был бы признателен за любую помощь.

Спасибо, Imad.

Ответ №1:

Главный вопрос — все ли директивы A содержатся в директиве B?

Если ответ положительный, вы можете зарегистрировать директивы A в контроллере B, как в примере angular для вкладок:

http://jsfiddle.net/api/post/library/pure/

Следует отметить, что часть, которую они используют require: '^tabs' в директиве A для доступа к контроллеру B. В вашем случае использования, я предполагаю, что после выбора экземпляра A он должен сообщить об этом контроллеру B в своей функции link.

Если ответ отрицательный, вы можете создать службу (например, называемую S), в которой две директивы будут взаимодействовать. На этот раз B зарегистрируется в S для внесения изменений. Когда выбран экземпляр A, он сообщит об этом службе S, и должен быть вызван обратный вызов B.

Комментарии:

1. Спасибо haimlit за полезные идеи. Оказалось, что мой вариант использования был не очень сложным, и наличие одной директивы, содержащейся внутри другой, будет работать для меня.