对象和文件上载字段未显示

时间:2015-10-25 14:04:51

标签: javascript meteor meteor-autoform meteor-collection2

这是我的架构但是没有显示其字段名称和金额的成分对象,而且我的图片上传文件也没有显示。你能告诉我我的错误以及如何纠正它吗?

Recipes.attachSchema(new SimpleSchema({
    name: {
        type: String,
        label: "Recipe Name",
        max: 100
    },

        ingredients: {
            type: Object,
            label:"Ingredients",
            minCount: 1
        },

    "ingredients.$.name": {
    type: String
        },
    "ingredients.$.amount": {
    type: String
    },
    description: {
        type: String,
        label: "How to prepare ",
    },
    time: {
        type: Number,
        label: "Time (Minutes)",
    },
    image: {
        type: String,

        autoform: {
            afFieldInput: {
                type: 'fileUpload',
                collection: 'RecipesImages',
                label: 'Recipe Picture'
            }
        }
    },
    createdAt: {
        type: Date
    }
}));

在这里,我将自动表单放入我的模板中

{{#autoForm collection="Recipes" id="insertRecipes" type="insert"}}
    <fieldset>
        <legend>Add a Recipe</legend>
        {{> afQuickField name='name'}}
        {{> afQuickField name='Ingredients'}}
        {{> afQuickField name='Ingredients.name'}}
        {{> afQuickField name='Ingredients.amount'}}



        {{> afQuickField name='description' rows=6}}
        {{> afQuickField name='time'}}
        {{> afQuickField name='image'}}

    </fieldset>
    <button type="submit" class="btn btn-primary">Add Recipe</button>
{{/autoForm}}

1 个答案:

答案 0 :(得分:1)

首先,架构未正确定义。如果要使ingredients属性成为一个对象数组,则需要将type定义为数组,如下所示:

ingredients: {
    type: [Object],
    label:"Ingredients",
    minCount: 1
}

然后,在模板中,您使用大写字母I而不是小写字母来获取属性的名称,因为它在模式中定义。将名称更改为ingredients

{{> afQuickField name='ingredients'}}

您无需在模板中包含ingredients的子属性。 Autoform将自动为对象数组的子属性创建UI。

对于文件上载,输入类型必须与架构中的定义匹配。尝试将模板中的字段定义更改为:

{{> afFieldInput name='image'}}