Метеоритный Железный Маршрутизатор. Один маршрут, несколько шаблонов. Как?
Я использую последний Метеор и Железный Маршрутизатор. Представьте, что у вас есть коллекция customComputer. Компьютеры имеют три разных состояния: "заказ", "сборка", "поставка".
Прямо сейчас я использую три различных маршрута для этого, каждый с различным шаблоном
/o/_id
/b/_id
/s/_id
Компьютер не может быть в двух состояниях одновременно, поэтому я бы хотел иметь один маршрут. Как мне поменять шаблоны?
/c/_id
Лучшее, что я могу придумать, - это создать "основной" шаблон, который ссылается на другие. Это лучшая практика?
{{#if isOrder}}{{>orderTemplate}}{{/if}}
{{#if isBuilding}}{{>buildingTemplate}}{{/if}}
{{#if isShipped}}{{>shippedTemplate}}{{/if}}
Вот маршрут:
Router.route('order', {
path: '/o/:b/:computerId',
onAfterAction: function() {
if (this.title) document.title = this.title;
},
data: function() {
if(!this.ready()) return;
var o = Computer.findOne(this.params.computerId);
if(!o) throw new Meteor.Error('Computer not found');
return o;
},
waitOn: function() {
if (!Meteor.userId()) return this.next(); // Don't subscribe if not logged in.
return [
Meteor.subscribe('computerById', this.params.computerId),
Meteor.subscribe('myProfile'),
];
},
});
Есть ли способ лучше?
1 ответ
Я бы сделал вашу основную идею шаблона или динамический шаблон.
Динамический шаблон имеет тенденцию быть лучше, когда у вас есть довольно много опций, которые можно динамически настроить.
Но основной шаблон, я думаю, становится более очевидным, когда у вас есть только несколько вариантов.
Любой способ может быть легко преобразован в другой, если вы считаете, что вам нужен другой вариант.