流星动态表单生成

时间:2015-03-20 13:16:03

标签: meteor

我有一个调查表,我希望管理员可以动态添加更多问题。我想这样做的方法是让管理员向有几个属性的Questions集合添加问题,例如:

{
    "description" : "desc",
    "fieldType" : "textField",
    "sortOrder" : 1,
    "dataType" : "text",
    "_id" : "eFopP8XFgY8Br93fA"
}

然后在客户端,使用#each块和动态模板循环遍历这些:

{{#each questions}}
  {{>Template.dynamic template=fieldType}}
{{/each}}

现在“fieldType”字段将对应于存储模板的名称,例如

<template name="textField">
    <div>
        <input id="{{_id}}" type="{{dataType}}" class="validate">
        <label for="{{_id}}">{{description}}</label>
    </div>
</template>

并且这些模板内部将根据类型具有不同的输入字段。

我有两个问题:

  1. 这是解决这个问题的好方法吗?
  2. 如果是,在保存答案时如何获取这些输入字段的值(因为我们不知道在编译时哪些字段可能存在)

1 个答案:

答案 0 :(得分:3)

关于你的第一个问题,我同意@Kyll关于autoform,我认为你可以动态地将模式作为json对象传递。

关于你的第二个问题,请检查问题Dynamically add form fields in meteorjs,在那里你会找到第二个问题的答案。您可以使用.serializeArray()JQuery serializeArray

轻松获取动态创建的表单中所有字段的值