有一个需求,根据后台传过来的表单任意两项,比如name,avatar生成一个表单,
首先想到查表法
let formType={
text: <Input/>,
file: <File/>,
textarea: <Textarea/>
}
let createForm={
resume:{
type:text,
name:startup[resume],
label:"简介"
},
avatar:{
type:file,
name:startup[avatar],
label:"头像"
}
}
function initCompleteForm(ele){
let type = createForm[ele].type
let name = createForm[ele].name
let label = createForm[ele].label
let inputEle = formType.type
inputEle.setAttribute("name",name)
imputEle.setAttribute("label",label)
var MyForm = document.getElementById("complete-startup-form")
MyForm.appendChild(inputEle)
}
columns.map((item,index) => {
initCompleteForm(item)
})
// columns是需要插入字段的数组,如[name,age];表单的写法是用了一个formsy-react-components的插件,关键代码是这样
<MyForm id="complete-startup-form">
</MyForm>
但是每一个输入域的类型是不同的,有的是file,text,textarea等,但是这样我取到每一个字段的type是file或者text之后,怎么生成一个表单,就有点懵了,还要有name值和label,或者有什么其它的方法
一个可能的方案是:为file, text, textarea等类型分别确定一个模板,然后根据后台返回的数据的类型确定使用哪一个模板。
另外,你的第一个lebel应该是笔误。