首页 > 编程知识 正文

自定义 表单,vue动态创建表单

时间:2023-05-03 22:51:48 阅读:55679 作者:2930

在标题引线开发中,如果遇到非传统表单元素(如地址组件选择),开发人员必须将用户选择的最终结果转换为后台指定的格式,并与其他表单元素一起提交到后台。 此时,如果可以像input、radio等传统表单元素那样直接使用v-model双向绑定,就非常有用。v-model 是一个语法糖,可以拆解为 props: value 和 events: input。就是说组件必须提供一个名为 value 的 prop,以及名为 input 的自定义事件,满足这两个条件,使用者就能在自定义组件上使用 v-model

demo演示的窗体控件自定义了几个列参数名称和参数值,用v-model绑定的数据格式为json对象{参数名称:参数值,…},在页上,用-表示参数的

打印v-model绑定变量值

同样,也可以渲染相同格式的初始值

子组件代码template代码

divclass=' custom-params ' divclass=' m B- sm ' v-for=' (item, index ) inparam slist ' : key=' index ' input type=' text ' maxlength=' 50 ' v-model=' item.name ' span class=' 0 ' v-model=' item.value ' buttonv-if=' params list.length1' class=' ui AMS (index ) (/buttonbuttonv-if=)

paramsList: [{ name: ',value: ',}] props参数

value: { type: Object,default: null } methods方法:

init:渲染初始值

init () if ) this.valueJSON.stringify ) this.value )!==' { } } { this.params list=[ ] for (letkeyinthis.value ) this.Paramslist.push ) Name3360key,value 3360 tey }

value transform ({ let result={ } this.params list.map ) val={ result [ val.name ]=val.value } ) return result}

handledelparams(index ) this.Paramslist.splice ) index,1 );handleAddParams :添加参数行

handleaddparams ((this.params list.push ) ) name: ',value: ',} handLeInput: 监听用户输入值并并派发给父组件

props通常不能在组件中更改。 在父级发生更改,初始从value检索一次值,并且即使value发生更改,watch也会接收即时更新的组件也不会更改value的值,而是更改paramsList (当前值),同时自定义更改的值手动输入((this.$ emit )、this.valueTransform ) ); } 监听值props中value变量并重现渲染value值

使用watch进行变量拦截时,可以使用deep:true进行深度拦截;

immediate用于确定是否立即执行方法(初始化时首次获取值时执行) watch: ) value: ) handler ) { this.init,deep 3360

NPMinstall@vue/CLI@3.8.4-g (版本3.x创建命令vue create名称,版本2.x创建命令vue init webpack名称) tips:value和input (子部件中的位置和props同级),可以在以下配置中将value替换为newValue,在emit事件中将input替换为change

模型: { prop : ' new value ',event: 'change' },共享: git地址

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。