请告诉我如何从afQuickField帮助器方法访问scheam定义。我想根据类型进行不同的渲染。
假设我有一个简单的架构定义
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}}
编辑: 我想我应该说我在autoform中使用myQuickField。 我也将在其他收藏中使用它。所以我还需要知道如何从字段helperMethod中的auto表单中找出集合的值。
<template name="myForm">
{{#autoForm collection="mySchema" type="insert"}}
<fieldset>
{{> **myQuickField** name='numberField'}}
{{> **myQuickField** name='stringField'}}
</fieldset>
{{/autoForm}}
</template>
答案 0 :(得分: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;
} });
答案 1 :(得分: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}}"}}
autoform模板是相同的
<template name="myForm">
{{#autoForm collection="mySchema" type="insert"}}
<fieldset>
{{> myQuickField name='numberField'}}
{{> myQuickField name='stringField'}}
</fieldset>
{{/autoForm}}
</template>