2016-05-24 13 views
1

AutoForm + Select2プラグインでMeteorのSimpleSchemaを使用して、データベースからSelectフィールドのオプションを生成しようとしています。SimpleSchemaのデータベースからSELECTオプションを読み込む

'occupation'コレクションが公開され、Meteorにコレクション 'Occupation'が定義されています。 SimpleSchemaで

私はこれ持っている: -

occupations: { 
    type: [String], 
    optional:true, 
    label: 'Occupation', 
    autoform:{ 
     type:"select2", 
     placeholder: 'Comma spaced list of occupations', 
     options: function() { 
     Meteor.subscribe('occupations'); 
     return Occupations.find({}); 

     } 
    } 
    }, 

をしかし、それは、収集結果を返し、エラーメッセージを表示せずにアプリケーションがクラッシュしません。

答えて

1

これを処理する最良の方法は、ヘルパーを介してオプションリストを提供することです。 listOccupationsは、フォームを含むテンプレート内でヘルパーです

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

Template.myForm.helpers({ 
    listOccupations: function() { 
    Meteor.subscribe('occupations'); 
    return Occupations.find({}).fetch(); 
    } 
}); 

そして、我々はschena

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

からオブジェクトのオプションを削除するには、あなたは、このアプローチを試してみました:このことができます

autoform: { 
    options: { 
    var occupations = []; 

    Occupations.find().map(function(occ) { 
     occupations.push(
     {label: occ.description, value: occ._id} 
     ); 
    }); 

    return occupations; 
    } 
} 

希望を...

+0

私はこのような何かを試してみました - しかし、非同期操作が選択を移入しませんでしたかつてそれが描かれた。 あなたのコードを使ってテストします – Andy59469

0

私は同じでした問題。私はコレクションのスキーマを/ lib/collectionsフォルダに定義しており、それはサーバ側とクライアント側の両方で実行されています。私が持っていたconsole.logは、サーバー側に正しい値を、クライアント側に空の配列を表示していました。私が何をしたか されました:

if (Meteor.isClient){ 
Meteor.subscribe('service-categories-list', { 
    onReady: function(){ 
     const serviceCategories = ServiceCategories.find({}).map(function(item, index) { 
      return { 
       label: item.name, 
       value: item.slug 
      }; 
     }); 
     Schema2._schema.type.autoform.options = serviceCategories; 
    } 
    }) 
} 

私は_schemaを使用することは良い考えではないことを知っているが、私は提案を受け入れる:)

関連する問題