Sto provando a creare una direttiva per consentire all'utente di navigare la pagina con i tasti freccia per sezione. Ma voglio anche essere in grado di avere quelle sezioni sparse per il dom, e di fare in modo che non si rompano quando le cose vengono aggiunte e rimosse. Mi viene in mente diversi modi per fare questo, ma nessuno di loro sono soddisfacenti:Angularjs: trova tutte le istanze di una direttiva
Creare una direttiva con un controller che permette altre direttive si registrano (e annullare la registrazione su $ distruggere). Ma questo sarà fuori uso se aggiungo qualcosa nel mezzo più tardi. Inoltre, ho provato a scrivere in questo modo, e sembra molto più codice del necessario.
Ogni volta che l'utente preme un tasto freccia, crea un array vuoto e $ trasmette un evento, con un callback per le direttive che si registrano in tale elenco. Quindi, una volta che la lista è piena, avanzare o tornare indietro. Loro (dovrebbero?) Tornare nell'ordine in cui sono sul DOM, ma non sono sicuro visto che in questo modo sembra pazzo e hackish.
Contrassegna le cose che sono "tabbable" con css e scrivi questo nel modo più semplice in jquery, qualcosa del genere: in un nuovo evento click,
var all = $('.tabbable')
, e poi fai l'ovvio con quello. Ma davvero non voglio farlo in quel modo, perché non è il modo "angolare". Non per un senso di purezza, ma perché sto costruendo questo come parte di una più ampia libreria di widget, e voglio che questa funzionalità sia accessibile a loro.
Quindi, non v'è alcun modo per me per ottenere gli scopi di tutte le direttive di un certo tipo, senza ricorrere a hack strani, o diffondere la logica in tutto il luogo?
Qualche suggerimento per gestire l'ordine di quell'array mentre vengono mescolati in giro? – doubledriscoll
Penso che avrei bisogno di capire i requisiti un po 'meglio prima di dare un suggerimento. Vuoi ordinare gerarchicamente, in ordine cronologico rispetto all'inserimento DOM, ecc.? –