Si potrebbe definire isAdmin
proprietà calcolata in applicazione Controller:
// application controller
isAdmin: Ember.computed(function() {
// your logic here
})
// application template
{{#if isAdmin}}
{{admin-header}}
{{else}}
{{user-admin}}
{{/if}}
o si potrebbe avvolgere come header-nav
componente isAdmin
proprietà, quindi:
// application template
{{header-nav isAdmin=isAdmin}}
UPDATE (dettagli con brace-semplice -auth per @Grimmy)
1) Inietti currentUser
i nto session
(ad esempio, https://stackoverflow.com/a/30894082/4950029)
2) Risolvere currentUser
in beforeModel
gancio e impostare currentUser
proprietà del controller:
//route
beforeModel: function() {
var self = this;
this.session.get('currentUser').then(function(user) {
self.controllerFor(self.routeName).set('currentUser', user);
},function() {
self.controllerFor(self.routeName).set('currentUser', null);
});
}
//controller
isAdmin: Ember.computed('currentUser.role', function() {
return (this.get('currentUser.role') === 'admin');
}),
//template
{{#if isAdmin}}
{{admin-header}}
{{else}}
{{user-admin}}
{{/if}}
o come risposta sopra
//controller
roleBasedComponentName: Ember.computed('currentUser.role', function() {
return ((this.get('currentUser.role') === 'admin') ? 'admin-header' : 'user-header');
})
//template
{{component roleBasedComponentName user=currentUser}}
Mi potete dare un esempio completo del controller per favore? – Grimmy
Ti piacerebbe vedere qualcosa di speciale? – artych
Usando ember-simple-auth per autenticare, voglio ottenere l'attuale user.role per decidere quale vista eseguire il rendering – Grimmy