Как заполнить autoForm select значениями из коллекции в Meteor?

Я только что нашел этот потрясающий пакет autoForm для Meteor и хочу использовать его вместе с select2.

Моя цель - использовать автоформу для простого создания формы ввода для одной из моих коллекций. Препятствие заключается в следующем: как мне заполнить его полями из другой коллекции и как сделать его множественным?

Внутри моей библиотеки / коллекции я объявляю коллекцию Meteor:

Clients = new Mongo.Collection('clients');
Clients.attachSchema(new SimpleSchema({
    clientName: {
        type: String,
        label: "Mandator Name",
        max: 200
    }
}));

Сейчас я не получаю документацию по автоформам. На странице атмосферы ( https://atmospherejs.com/aldeed/autoform) я должен использовать что-то подобное, если я не ошибаюсь:

{{#autoForm collection="Clients" id="insertClientForm" type="insert"}}
    {{> afFieldInput name="clientName" options=options}}
{{/autoForm}}

А затем напишите несколько JS, как это:

Template.registerHelper({
    options: function() {
        return Clients.find({}, {fields: {clientName: 1}});
    }
});

Шаблон отображается хорошо, как я вижу в поле ввода. Однако это не мульти-выбор, и это не позволяет мне выбирать какие-либо значения вообще.

Любые идеи о том, где проблема?

Бонусный вопрос: Как я могу использовать select2 на сгенерированных autoForm входах select?РЕДАКТИРОВАТЬ: Используйте aldeed: autoform-select2, чтобы использовать select2.

2 ответа

Я проверил это решение с помощью Meteor, используя

aldeed: collection2 aldeed: автоформа natestrauser: select2 aldeed: автоформа-select2

Допустим, у вас есть форма с информацией о профиле пользователя, и одним из полей является "профессия" (как в их работе и т. Д.), И вы хотите, чтобы они выбирали профессию из списка.

1) Опубликуйте коллекцию, которую вы хотите использовать для опций выбора.

НА СЕРВЕРЕ

Meteor.publish('occupations', function () {
  return Occupations.find();
});

2) Подписаться на сборник на Клиента

НА КЛИЕНТА

Meteor.subscribe('occupations');

3) Создайте помощника для шаблона вашей формы

Template.CreateUser.helpers({
  listOccupations: function () {
    return Occupations.find({}).fetch();
  },
});

4) Затем, наконец, укажите этот помощник в параметре options поля autoForm - в этом случае использовался afQuickField

{{> afQuickField name='occupations' multiple=true tags=true options=listOccupations}}

5) И убедитесь, что ваша схема правильно настроена для использования Select2

occupations: {
    type: [String],
    optional:true,
    label: 'Occupation',
    autoform:{
      type:"select2",
      placeholder: 'Comma spaced list of occupations',
    }
  },

Вы должны сопоставить свою коллекцию с меткой и значением; Метка - это то, что увидит клиент, значение - это то, что будет сохранено при отправке.

https://github.com/aldeed/meteor-autoform

Template.registerHelper({
    options: function() {
        return Clients.find({}, {fields: {clientName: 1}}).map(function (c){
      return {label: c.clientName, value: c._id};;
    }
});

Если вы хотите выбрать несколько элементов, вам нужно указать тип ключа схемы [String] вместо String

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