Метеоритный Железный Маршрутизатор. Один маршрут, несколько шаблонов. Как?

Я использую последний Метеор и Железный Маршрутизатор. Представьте, что у вас есть коллекция 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 ответ

Решение

Я бы сделал вашу основную идею шаблона или динамический шаблон.

Динамический шаблон имеет тенденцию быть лучше, когда у вас есть довольно много опций, которые можно динамически настроить.

Но основной шаблон, я думаю, становится более очевидным, когда у вас есть только несколько вариантов.

Любой способ может быть легко преобразован в другой, если вы считаете, что вам нужен другой вариант.

Другие вопросы по тегам