Как заполнить 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