#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 за полезные идеи. Оказалось, что мой вариант использования был не очень сложным, и наличие одной директивы, содержащейся внутри другой, будет работать для меня.