Я пытаюсь создать директиву, позволяющую пользователю перемещаться по странице со стрелками по разделам. Но я также хочу, чтобы эти секции были разбросаны по всему дому, и чтобы это не ломалось, когда материал добавлялся и удалялся. Я могу придумать несколько способов сделать это, но ни один из них не является удовлетворительным:
-
Создайте директиву с контроллером, который позволяет другим директивам регистрироваться (и отменить регистрацию на $destroy). Но это будет не по порядку, если я добавлю что-нибудь посередине позже. Кроме того, я пробовал написать его таким образом, и это похоже на то, как больше кода, чем необходимо.
-
Всякий раз, когда пользователь нажимает клавишу со стрелкой, создавайте пустой массив и $broadcast событие, с обратным вызовом для того, чтобы директивы регистрировались в этом списке. Затем, как только этот список будет заполнен, перейдите или перейдите на него назад. Они (должны?) Вернутся в том порядке, в котором они находятся на DOM, но я не уверен, так как этот путь кажется сумасшедшим и хакерским.
-
Отметьте вещи, которые "tabbable" с помощью css, и напишите это простым способом в jquery, примерно так: В новом событии click
var all = $('.tabbable')
, а затем сделайте очевидное с этим. Но я действительно не хочу так поступать, потому что это не "способ angular". Не из-за какого-то чувства чистоты, а потому, что я строю это как часть большей библиотеки виджетов, и я хочу, чтобы эта функциональность была доступной для них.
Итак, есть ли какой-либо способ для меня получить возможности всех директив определенного типа, не прибегая к странным хакам или распространяя логику повсюду?