2015-07-07 13 views
6

Ho questo oggetto in Angolare.Best practice: dovrei usare ng-switch per questo?

$scope.columns = { 
    workspace: { 
     title: "Workspace", 
     type: "workspace", 
     activities: [] 
    }, 
    alerts: { 
     title: "Alerts", 
     type: "alert", 
     activities: [] 
    }, 
    main: { 
     title: "Main Feed", 
     type: "main", 
     activities: [] 
    } 
}; 

E nel mio HTML ho bisogno di ciclo attraverso di essa per creare dinamicamente una serie di colonne nella mia app (credo qualcosa come Trello)

Ogni type è un riferimento ad una direttiva personalizzato.

Sto cercando di capire il modo migliore per inserire le mie direttive.

Sulla base di questi dati, il codice riportato di seguito è un modo appropriato per gestire dinamicamente la creazione di questi?

<div ng-repeat="(key, obj) in columns"> 

    <div ng-switch on="obj.type"> 
     <workspace-feed ng-switch-when="workspace" /> 
     <alert-feed ng-switch-when="alert" /> 
     <main-feed ng-switch-when="main" /> 
     <filter-feed ng-switch-when="filter" /> 
    </div> 

</div> 

mi piacerebbe essere in grado di fare qualcosa di simile ... <{{obj.type}}-feed /> ma non sono sicuro se questo è valido, o se c'è un modo migliore per creare questo.

I pensieri sono molto apprezzati!

+0

Cosa c'è di sbagliato con ngSwitch? – dfsq

+0

Sembra buono. Quanto è diverso ogni feed? Forse non hai bisogno di direttive separate per ogni feed - forse puoi usare una singola direttiva che carica dinamicamente un modello in base al tipo di colonna. Dipende dalle tue colonne. – Agop

+0

@dsfq - non c'è niente di male, sto solo cercando le "migliori pratiche" per qualcosa di simile. –

risposta

2

Quello che hai finora sembra perfetto.

A seconda della differenza tra le colonne, è possibile utilizzare solo una direttiva che carica dinamicamente un modello anziché più direttive. Ad esempio, dare un'occhiata a ng-include:

<div ng-include="'columns/' + column.type + '.html'"></div>