Sto utilizzando Ember, Dati di bordo e Manubri per visualizzare una sequenza temporale con un numero di tipi diversi di modelli. La mia attuale implementazione, benché funzioni correttamente, sembra che potrebbe essere drasticamente migliorata con una convenzione e un aiuto. Tuttavia, non riesco a capire come utilizzare i modelli già definiti.Scegliere dinamicamente una vista in fase di esecuzione con Ember + Handlebars
Questo è quello che ho:
{{#view App.AccountSelectedView contentBinding="App.selectedAccountController.everythingSorted"}}
{{#with content}}
<ol class="timeline">
{{#each this}}
{{#is constructor="App.Design"}}
... stuff about the design
{{/is}}
{{#is constructor="App.Order"}}
... stuff about the order
{{/is}}
{{#is constructor="App.Message"}}
... stuff about the message
{{/is}}
{{/each}}
</ol>
{{/with}}
{{/view}}
... insieme a un aiutante ...
Handlebars.registerHelper('is', function(options) {
if (this.constructor == options.hash["constructor"]) {
return options.fn(this);
}
});
avrei preferito fare affidamento su qualche convenzione per capire cosa vista per il rendering. Ad esempio:
<script type="text/x-handlebars-template" data-model="App.Design" id="design-view">
... stuff about the design
</script>
<script type="text/x-handlebars-template" data-model="App.Order" id="order-view">
... stuff about the order
</script>
Forse l'attributo del modello di dati potrebbe essere utilizzato per determinare come viene eseguito il rendering di un oggetto.
{{#view App.SelectedAccountView contentBinding="App.selectedAccountController.everythingSorted"}}
{{#with content}}
<ol class="timeline">
{{#each this}}
{{viewish this}}
{{/each}}
</ol>
{{/with}}
{{/view}}
Purtroppo, non riesco a capire come accedere ai modelli da un helper.
Handlebars.registerHelper('viewish', function(options) {
// Were I able to access the templates this question
// would be unnecessary.
// Handlebars.TEMPLATES is undefined...
});
Inoltre, è qualcosa che dovrei voler fare con Handlebars?