Vue中组件递归的方法及使用问题有哪些(vue,开发技术)

时间:2024-04-27 16:31:36 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

1、第一个问题就是,循环表单;看下图

Vue中组件递归的方法及使用问题有哪些

然后这里的数据返回的是这样的:

Vue中组件递归的方法及使用问题有哪些

说明下数据字段的含义:name属性算是表头,然后里面的valueType代表的是各种不同输入框;比方说上面的7代表的是普通的下拉框,然后6就是普通的输入框,1的话是布尔下拉框(其实在前端这边1和7是一样的,但是需要注意点的是Element中的下拉框判断使用的是双等于号,意思说,布尔true等于字符转的false及true=='false'是正确的,所以这里需要格式化);如果等于的是8的话,代表这个是另一个子表单。如果有对应的editData字段,并且这里还需要递归一次这样的数据;

来看下我的格式化数据的过程:

formatterData(editDataAjax,id){editDataAjax.map(item=>{//如果是类型8,则需要再次展开数据if(item.valueType==8){item.editData=[];item.expanded=false;}//如果是枚举的类型或者布尔的类型,则需要给他格式化数据一下,用来创建optionif(item.valueType==7||item.valueType==1){item.option=[];for(constkeyinitem.data){if(item.data.hasOwnProperty(key)){constelement=item.data[key];if(item.valueType==1){//如果是布尔类型的话,改成布尔item.option.push({value:key==="true"?true:false,label:element});}else{item.option.push({value:key,label:element});}}}}});}

最后这里需要注意的一点就是,循环创建输入框和下拉框的话,需要使用v-model的格式,如果单纯的时候的是:value模式绑定的话,会有问题,需要格外的注意,请看下面的代码

<templatev-if="item.valueType==6"><divclass="inputDom"><el-inputv-model="item['value']":disabled="item.flag==1?true:false"></el-input></div></template>

2、递归组件的使用

  首先要说下递归组件怎么使用,就是我的组件文件名叫做fromItem.vue;然后我的name名称也是fromItem(一定要有name),组件递归使用其实和使用其他的组件是一样的;需要先引入

importfromItemfrom'./fromItem';

然后注册

components:{fromItem},

使用的时候,也是一样的

<divclass="childDom"><fromItem:editData="item.editData"/></div>

但是这个时候,我们的数据就要发生相对应的变化:

Vue中组件递归的方法及使用问题有哪些

当我们给父级的editData赋值的时候,就会出来第一层级,让我们给父级中任意一个editData赋值,就会出现子组件递归了。这个时候不管有几层,都会出现相对应的表单了;

3、关于数据的整理和构建

  开始的时候,我把每次请求的数据函数都放在了子组件中进行,就是fromItem.vue文件中进行,但是这样的话,每次请求到最新的数据,如果我不保存上次的数据的话,发现就没有父表单了,只能出现子表单;如果要是保存的话,我就需要每次请求完成之后,调用父组件的方法,保存很多数据。造成了理解的困难;

  所以现在使用的方式就是,子组件文件,也就是fromItem.vue组件,不做任何数据的处理,只是接受并且展示数据;数据的请求,整理,和最后的编辑保存都在父组件中完成,这样的话,就不会造成数据的混乱,毕竟递归的时候,做的越多越容易出错;

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Vue中组件递归的方法及使用问题有哪些的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:spring cloud oauth2 feign遇到的坑怎么解决下一篇:

8 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18