Выберите шаблон представления по типу модели / значению объекта, используя Ember.js
Я хотел бы хранить разные объекты в одном и том же массиве содержимого контроллера и визуализировать каждый из них, используя соответствующий шаблон представления, но в идеале одно и то же представление.
Я выводю список объектов, используя код ниже. В настоящее время они идентичны, но я бы хотел использовать разные.
<script type="text/x-handlebars">
{{#each App.simpleRowController}}
{{view App.SimpleRowView class="simple-row" contentBinding="this"}}
{{/each}}
</script>
Урезанная версия вида ниже. Другие функции, которые я не включил, могут использоваться с любым из объектов, независимо от модели. Так что в идеале у меня было бы одно мнение (хотя я читал некоторые статьи о миксинах, которые могли бы помочь, если бы не).
<script>
App.SimpleRowView = Em.View.extend({
templateName: 'simple-row-preview',
});
</script>
Мои первые несколько тестов по разрешению различных типов объектов закончились множеством условий внутри 'simple-row-preview' - это выглядело ужасно!
Есть ли способ динамического управления templateName или представлением, используемым при переборе моего массива контента?
ОБНОВИТЬ
Большое спасибо двум респондентам. Окончательный код, используемый в представлении, приведен ниже. Некоторые из моих моделей похожи, и мне понравилась идея переключения между шаблонами (или своего рода «состоянием») в моем приложении.
<script>
App.SimpleRowView = Em.View.extend({
templateName: function() {
return Em.getPath(this, 'content.template');
}.property('content.template').cacheable(),
_templateChanged: function() {
this.rerender();
}.observes('templateName'),
// etc.
});
</script>