Коллекция изменений метеора при выборе пользователя в раскрывающемся списке

Я использую Meteor в сочетании с autoForm/quickForm. У меня есть в коллекции, для примера назовем его "Спорт". Коллекция задает вопрос, какими видами спорта пользователь занимался на этой неделе, используя раскрывающийся список (разрешенные значения в автоформе). Теперь, если пользователь выбирает бег, я хочу показать «расстояние», «площадь» и т. д. Если пользователь выбирает баскетбол, я могу показать «выстрелы» и т. д.

Как мне это сделать? Создайте несколько коллекций или SimpleSchema, или есть другой предпочтительный подход? В гугле ничего не нашел, хотя уверен, что это нередкий вопрос. Если у кого-то есть ссылка с дополнительной информацией, которая уже очень ценится.


Обновлять:

Я использую цикл «каждый», чтобы просмотреть все возможные виды спорта, которые я определил ранее. Как вы думаете, было бы разумнее создать элемент формы для каждого вида спорта? Если да, то как я могу убедиться, что это правильно настроено в схеме? Заранее спасибо!

{{#autoForm collection="Sports" type="update" doc=this id="FieldValueIsForm"}}
  {{#each sports}}
    <h3>{{this.name}}</h3>
    {{> afQuickField name="sports.$.sportTrue" noselect=true }}

    {{#if afFieldValueIs name="sports.$.sportTrue" value=true}}
      {{> afQuickField name="sports.$.sportDistance" value=this.frequency}}
    {{/if}}
  {{/each}}

  <div>
    <button type="submit">Submit</button>
  </div>
{{/autoForm}}

Обновление 2:

Мою схему можно найти здесь: http://pastebin.com/SbBSbqW2 Я немного упростил ее, но это основное содержание. Для разных видов спорта мне потребуются разные поля ввода.


person WalterB    schedule 18.09.2016    source источник
comment
Когда вы говорите, что если пользователь выбирает бег, я хочу показать «расстояние», «площадь» и т. д., вы имеете в виду, что хотите отображать эти данные в пользовательском интерфейсе, или вы хотите, чтобы отображались дополнительные параметры, чтобы пользователь мог выбрать/обновить?   -  person NFab    schedule 19.09.2016
comment
@NFab Извините, если эта часть была неясна. Я имел в виду, что хочу показать дополнительные параметры, чтобы пользователь мог выбирать/обновлять. Они могут быть разных типов в разных условиях.   -  person WalterB    schedule 19.09.2016
comment
Можете ли вы добавить свою текущую схему? Было бы полезно посмотреть, как данные структурированы и организованы в вашей базе данных.   -  person NFab    schedule 21.09.2016
comment
@NFab Обновлено со схемой. Спасибо за помощь.   -  person WalterB    schedule 21.09.2016


Ответы (1)


Похоже, вы хотите использовать параметр afQuickField с условием. В документации об этом говорится здесь. Также есть демонстрация того, как должен выглядеть код здесь; однако это выглядит так:

{{#autoForm collection="FieldValueIs" type="insert" id="FieldValueIsForm"}}
  {{> afQuickField name="a" options="allowed" noselect=true}}
  {{#if afFieldValueIs name="a" value="foo"}}
    {{> afQuickField name="b"}}
  {{/if}}
{{/autoForm}}

Вам просто нужно убедиться, что вы настроили «a» и «b» как поля выбора, которые вы хотите, правильно настроив их в своей схеме.

ОБНОВИТЬ:

Я предполагаю, что вы хотите сохранить расстояние, сделанные снимки и т. д. в коллекции SingleSport. Как именно вы его храните, зависит от вас, но это может выглядеть примерно так:

SingleSport = new SimpleSchema({
  sportType: {
    type: String
  },
  distanceRun: {
    type: Number,
    decimal: true,
    optional: true
  },
  shotsTaken: {
    type: Number,
    optional: true
  },
  sportTrue: {
    type: Boolean,
    label: "Sport completed",
    autoform:{
        type: "boolean-radios",
        trueLabel: "Enabled",
        falseLabel: "Disabled",
        value: false
    }
  }
});

Затем вы можете изменить условный раздел вашей формы следующим образом:

{{#if afFieldValueIs name="sportType" value="running"}}
  {{> afQuickField name="distanceRun"}}
{{/if}}
{{#if afFieldValueIs name="sportType" value="basketball"}}
  {{> afQuickField name="shotsTaken"}}
{{/if}}
person NFab    schedule 19.09.2016
comment
Спасибо за ваш ответ @NFab. Это работает частично. Я обновил свой вопрос сверху, чтобы отразить проблему, которую это дает мне. Короче говоря, у меня есть каждый цикл, чтобы показать все виды спорта, и это просто покажет вариант для всех видов спорта. - person WalterB; 21.09.2016
comment
@WalterB, я обновил свой ответ на основе ваших обновлений. - person NFab; 22.09.2016