Elegir dinámicamente una vista en tiempo de ejecución con Ember + Handlebars
Estoy usando Ember, Ember Data y Handlebars para mostrar una línea de tiempo con varios tipos diferentes de modelos. Mi implementación actual, aunque funciona correctamente, parece que podría mejorarse drásticamente con una convención y un asistente. Sin embargo, no puedo entender cómo usar plantillas ya definidas.
Esto es lo que tengo
{{#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}}
... junto con un ayudante ...
Handlebars.registerHelper('is', function(options) {
if (this.constructor == options.hash["constructor"]) {
return options.fn(this);
}
});
Prefiero confiar en alguna convención para averiguar qué vista representar. Por ejemplo
<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>
Quizás el atributo del modelo de datos podría usarse para determinar cómo se representa un objeto.
{{#view App.SelectedAccountView contentBinding="App.selectedAccountController.everythingSorted"}}
{{#with content}}
<ol class="timeline">
{{#each this}}
{{viewish this}}
{{/each}}
</ol>
{{/with}}
{{/view}}
Alas, no puedo entender cómo acceder a las plantillas desde un asistente.
Handlebars.registerHelper('viewish', function(options) {
// Were I able to access the templates this question
// would be unnecessary.
// Handlebars.TEMPLATES is undefined...
});
Además, ¿es algo que debería hacer con los manillares?