2012-06-22 8 views
6

Con angularjs, di solito usiamo un semplice codice HTML per scrivere viste. Ora ho una domanda: come posso mostrare o nascondere alcuni pulsanti dipendono dai diritti dell'utente?Come posso mostrare o nascondere alcuni pulsanti dipendono dai diritti dell'utente, in angularjs?

Ad esempio, la pagina corrente sta visualizzando un articolo. Se l'utente corrente è l'autore o l'articolo o l'amministratore, verrà visualizzato il pulsante "Elimina".

Ma dal momento che la vista è semplice HTML, come posso controllarlo?

Posso inviare una richiesta per passare alcuni dati (ad esempio ID utente corrente, ID articolo) al server per verificare, ma se ci sono molti pulsanti, ho bisogno di richiedere più volte, il che non è efficace.

C'è un modo migliore per farlo?

risposta

9

È possibile utilizzare lo ngShow directive. Metto insieme a little demo, ma il bit importante è semplicemente:

<button ng-show="user.id==post.postedby">Delete</button> 
+1

Ottimo esempio, grazie! – Freewind

+0

@Freewind: ho pensato che stavi guardando la soluzione più elegante per verificare i diritti dell'utente! Come in, se l'utente è loggato, queste informazioni sarebbero nel server (non sul client!), Quindi stavo davvero cercando la soluzione più elegante per questo. C'è una soluzione che si accontenta di non controllare ogni volta sul server? – ganaraj

+0

@ganaraj, non sono sicuro se capisco il problema. Informazioni sull'autenticazione e l'autorizzazione possono esistere anche sul lato client. Il server ha l'ultima parola, ovviamente (il server verificherà le autorizzazioni quando l'utente richiede una cancellazione), ma il client può ancora sapere chi è l'utente corrente e quali permessi hanno per poterlo riflettere nell'interfaccia utente. – Supr

Problemi correlati