Direttiva angularJS come componenti

3

Sono in un progetto in cui vogliamo comporre un sacco di "caselle informative".
Queste caselle (diciamo che sono per lo più diversi tipi di tabelle) dovrebbero essere facilmente incluse in diverse pagine e anche in diversi progetti (includiamo i componenti come una libreria in un progetto angolare di js, quindi un requisito angolare). Nel lungo periodo questi componenti potrebbero anche essere disponibili come API per altri sviluppatori da utilizzare.

Finora le direttive includono il proprio modello, uno stile css comune + uno stile unico per il componente, una serie di file testdata.

Quindi la mia domanda è fondamentalmente: può essere un buon approccio? È errato fare in modo che le direttive caricino effettivamente i dati stessi o devo sempre passare loro i dati?
Il motivo per cui voglio che la direttiva carichi i dati stessi è che includo i testdata nella libreria che consentono di testare i componenti sul posto (ad esempio su un dashboard) senza dover implementare i dati "reali".

Inoltre, i componenti avranno almeno tre stati (caricamento, dati difettosi, caricamento terminato) che, a mio avviso, dovrebbero trovarsi nella direttiva, e di nuovo richiedono che la direttiva carichi i dati stessi.

Il mio pensiero era di passare (per testare):

<my-directive test-data="testfile.json">
<my-directive load-data="/myurl">

È un buon approccio. In caso affermativo, dovrei inserire i dati nel controller di controllo e utilizzare alcuni comuni "data-fetching-service" per tutti i componenti?

Capisco che questa "domanda" è più una passeggiata di qualsiasi altra cosa, ma è davvero difficile prendere una decisione di progettazione che abbia una conoscenza così limitata di angularjs, quindi mi sto sforzando!

    
posta Todilo 17.12.2014 - 09:11
fonte

1 risposta

1

So far the directives include their own template, a common css styling + a unique style for the component, a set of testdata files.

So my question is basically: can this be a good approach?

Se le tue direttive sono variazioni di visualizzazione, ma mantengono la stessa funzionalità, ti consiglio di avere solo una direttiva principale e di creare direttive interne che consentano allo sviluppatore di personalizzare il suo aspetto.

Un buon esempio di questo include Schede Bootstrap con interfaccia utente angolare .

Is it faulty to make the directives actually load the data themselves or should I always pass the data to them?

Le direttive sono parti di componenti riutilizzabili. Se incorpori il caricamento dei dati nella direttiva, i tuoi controllori saranno più semplici.

E se fosse necessario filtrare quei dati solo in una parte specifica della tua applicazione? Lascia che lo sviluppatore trasmetta i dati desiderati, filtrati o meno.

The reason I want the directive to load data themselves is that I include testdata in the library allowing for testing the components in place (on for instance a dashboard) without having to implement the "real" data.

Un buon approccio potrebbe essere quello di creare un servizio myComponentTestData , che ti permetta di decidere dal controller cosa usare, e quindi passare quei dati alla tua direttiva.

Also, the components will have at least three states (loading, faulty data, finished loading) which I think should lie with the directive, again prompting for the directive to load the data itself.

Hai ragione nel pensare che lo stato dovrebbe trovarsi nella direttiva. Puoi controllare questo comportamento passando una promessa anziché i dati recuperati: se la promessa è soddisfatta, verifichi se i tuoi dati sono difettosi o meno.

    
risposta data 04.08.2015 - 14:31
fonte

Leggi altre domande sui tag