2017-03-07 7 views
0

scheam定義にアクセスする方法をafQuickFieldヘルパーメソッドから教えてください。私はタイプに基づいて異なるレンダリングをしたい。Meteor.js:ヘルパー関数afQuickFieldからスキーマメタデータ(フィールド型)にアクセスする方法

は私が私が使用しているフィールドの種類を伝えるヘルパーメソッドをしたい

mySchema = new SimpleSchema({ 
numberField: { 
    type: Number, 
    defaultValue: 3 
}, 
stringField: { 
    type: String, 
},... 

を定義したシンプルなスキーマを持っているとしましょう。

Template.myQuickField.helper({ 
    fieldMetaDataString: function() { 
    let type = ??What to put here. Code that looks at Simple Schema definition for the field and tells me its type?? 
    if(type===String){ 
    return true; 
    } 
    return false; 

}})。

今、afQuickFieldを自分のテンプレートにラップして、フィールドのタイプに応じて別の方法でレンダリングできるようにしたいと思います。これは簡単な例であることに注意してください。私はもっ​​とスタイルを変えたいと思っています。

<template name="myQuickField"> 
    {{#if fieldMetaDataString}} 
    {{> afQuickField id=id name=name style="stringstuff"}} 
    {{else}} 
    {{> afQuickField id=id name=name style="otherstuff"}} 
    {{/if}} 

EDIT: 私は私がその後、オートフォームでmyQuickFieldを使用していたの必要がありますね。 と私は他のコレクションでも使用します。だから私はフィールドhelperMethod内の自動フォームからコレクションの価値をどのように見つけ出すか知る必要もあります。

<template name="myForm"> 
{{#autoForm collection="mySchema" type="insert"}} 
<fieldset> 
    {{> **myQuickField** name='numberField'}} 
    {{> **myQuickField** name='stringField'}} 

</fieldset> 
{{/autoForm}} 
</template> 

答えて

0

これはなんですか?

Myschemadef ={ 
numberField: { 
    type: Number, 
    defaultValue: 3 
}, 
stringField: { 
    type: String, 
} 
} 

mySchema = new SimpleSchema(Myschemadef); 

Template.myQuickField.helper({ 
    fieldMetaDataString: function(feld) { 
    let type = Myschemadef[feld].type; 
    return type===String; 
} }); 
0

スキーマを添付する前にエクスポートしてから、テンプレートjs​​ファイルにインポートすることができます。

export const schema = new SimpleSchema({ 
    stringField: { 
    type: String 
    }, 
    numberField: { 
    type: Number 
    } 
}); 

、その後、オートフォームテンプレートが同じ

<template name="myForm"> 
{{#autoForm collection="mySchema" type="insert"}} 
<fieldset> 
    {{> myQuickField name='numberField'}} 
    {{> myQuickField name='stringField'}} 

</fieldset> 
{{/autoForm}} 
</template> 
+0

ある

{{> afQuickField id=id name={{name}} style="{{setStyle name}}"}} 

myQuickFieldテンプレート内

import { schema } from '../imports/api/data/data.js' Template.myQuickField.helper({ setStyle: function(name) { let type = schema._schema[name].type if(type===String){ return "stringStyle"; } else if (type===Number){ return "numberStyle" } }); 

それをインポートし、私の最後の編集を参照してください。私は最初に正しく私の必要性を説明したとは思わない。私はコレクションとフィールドを見つけるヘルパーメソッドが必要です。 mycheickField.helpersからautoformsコレクション変数にアクセスする方法はありますか –

+0

これは同じですが、静的な文字列ではなく名前パラメータを渡します – mutdmour

関連する問題