Come fa un accesso un valore fornito dal gancio del modello del percorso all'interno del template principale
Per impostazione predefinita, all'interno del gancio setupController
del percorso, Ember sarà set the property model
on your controller al valore risolto della promessa restituita dal gancio model
del percorso.
Significato si può semplicemente utilizzare la proprietà model
nel modello per accedere model.navigation
:
<nav>
{{#each model.navigation as |navItem|}}
<li>{{#link-to navItem.link}} {{navItem.title}} {{/link-to}}</li>
{{/each}}
</nav>
Se si desidera utilizzare un nome diverso, è possibile ignorare il gancio setupController
e impostare il nome da soli:
export default Ember.Route.extend({
// ...
setupController(controller, model) {
this.set('navigation', Ember.get(model, 'navigation'));
}
// ... rest of the code
})
Ciò significa che ora è possibile utilizzare navigation
anziché model.navigation
all'interno del modello. Un altro modo potrebbe essere quello di aggiungere un alias all'interno del vostro controller per la proprietà model
:
export default Ember.Controller.extend({
navigation: Ember.computed.alias('model.navigation')
// ... rest of the code
})
che vi permetterà così di utilizzare navigation
invece di model.navigation
.
Tuttavia, se si desidera avere una sorta di navigazione globale nell'applicazione, il modo migliore sarebbe utilizzare uno Service
che si dovrebbe iniettare in qualsiasi controller che necessita di navigazione. Qualcosa di simile:
// app/services/navigation.js
export default Ember.Service.extend({
items: null,
init() {
this._super(...arguments);
this.set('items', [{
title: "Projects",
link: "projects"
}, {
title: "My Specifications",
link: "specs"
}]);
}
});
E poi iniettare nel vostro controller:
export default Ember.Controller.extend({
navigation: Ember.service.inject()
});
E ora si ha accesso alla navigazione nel modello che del controllore pure.
Prima di tutto è necessario refferare i dati del modello utilizzando {{#each model.navigation ...}} nel modello. In secondo luogo, ogni percorso corrisponde al suo modello. Nel tuo caso hai bisogno di un percorso di applicazione per visualizzare i dati dal modello nell'applicazione hbs. –
Questo è esattamente ciò a cui non sono interessato, @kristjan. Ho una (molto comune) situazione in cui ho bisogno di un percorso normale per fornire dati a cui accedere nel modello principale (application.hbs). Ad esempio l'elenco di navigazione attiva. – Slavic
@Slavic Ogni modello che ha il proprio percorso è il modo ember. Convenzione sulla configurazione, ma se si desidera visualizzare il modello di navigazione nel percorso dell'applicazione perché non restituire più modelli per il percorso dell'applicazione? – Craicerjack