3

Meteor 用のこの素晴らしい autoForm パッケージを見つけたので、select2 と一緒に使用したいと思います。

私の目標は、autoForm を使用して、コレクションの 1 つの入力フォームを簡単に作成することです。障害は、別のコレクションのフィールドをどのように入力し、複数選択できるようにするかです。

lib/collections 内で Meteor コレクションを宣言します。

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

現在、autoForm に関するドキュメントを入手できません。Atmospherejs ページ ( 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}});
    }
});

入力ボックスが見えるように、テンプレートは問題なくレンダリングされます。ただし、複数選択ではなく、値をまったく選択できません。

問題がどこにあるかについてのアイデアはありますか?

おまけの質問: autoForm で生成された選択入力で select2 を使用するにはどうすればよいですか? EDIT : aldeed:autoform-select2 を使用して select2 を使用します。

4

2 に答える 2

2

Meteor を使用してこのソリューションをテストしました

aldeed:collection2 aldeed:autoform natestrauser:select2 aldeed:autoform-select2

ユーザーに関するプロファイル情報を含むフォームがあり、フィールドの 1 つが「職業」(仕事など) であり、リストから職業を選択してもらいたいとしましょう。

1) Select オプションに使用するコレクションを公開します。

サーバー上

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

2) クライアントでコレクションを購読する

クライアントで

Meteor.subscribe('occupations');

3) フォームのテンプレートのヘルパーを作成する

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

4) 次に、最後に autoForm フィールドの options パラメータでそのヘルパーを参照します - この場合は 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',
    }
  },
于 2016-05-25T23:00:15.283 に答える
1

コレクションをラベルと値にマップする必要があります。label はクライアントに表示されるもので、value は送信時に保存されるものです。

https://github.com/aldeed/meteor-autoform#use-a-helper

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

複数選択が必要な場合は、[String]代わりにスキーマキータイプを作成する必要がありますString

于 2015-10-30T13:37:06.450 に答える