2017-03-07 31 views
0

请告诉我如何从afQuickField辅助方法访问scheam定义。我想根据类型进行不同的渲染。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}} 

编辑: 我想我应该然后我使用了自动的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 
    } 
}); 

然后再导入

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" 
    } 
}); 

内myQuickField模板

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

了自动模板是一样的

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

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

请参阅我的最后的编辑。我不认为我第一次正确解释了我的需要。我需要一个帮助器方法来查找集合和字段。有没有办法从myQuickField.helpers –

+0

来访问autoforms集合变量ya,它是一样的,但不是静态字符串,而是传递name参数 – mutdmour

相关问题