首页前端开发VUEvue中下拉框组件的封装方式

vue中下拉框组件的封装方式

时间2024-02-11 05:28:03发布访客分类VUE浏览833
导读:收集整理的这篇文章主要介绍了vue中下拉框组件的封装方式,觉得挺不错的,现在分享给大家,也给大家做个参考。 目录vue下拉框组件的封装原理使用vue封装远程下拉框组件总结vue下拉框组件...
收集整理的这篇文章主要介绍了vue中下拉框组件的封装方式,觉得挺不错的,现在分享给大家,也给大家做个参考。
目录
  • vue下拉框组件的封装
    • 原理
    • 使用
  • vue封装远程下拉框组件
    • 总结

      vue下拉框组件的封装

      原理

      vue element中,需要封装一个对应的下拉款组件。

      第一步:在api_domain.js中添加后台的请求接口

      //获取下拉框的接口 从redis中  domainGetDomainKeyRedis: params =>
       {
           	  return axios.post('domain-manager/domain/getDomainKeyRedis',qs.stringify(params));
      }
          ,//获取下拉框的接口 从DB中  domainGetDomainKeyDB: params =>
       {
           	  return axios.post('domain-manager/domain/getDomainKeyDB',qs.stringify(params));
      }
          ,

      第二步,在文件夹api中新建getSelect.js,内容

      /** * _this为传过来的this *  * 根据参数str,去获取到对应的下拉框的值 *  * paramName,接收的数组,如'tyPE' *  * 先去redis总查询,如果没有值,再去数据库中查询 */import api From '@/api/api_domain'export function GetSelect(_this,str,paramName) {
      	    let para = {
      		key: str	}
          ;
      		if(typeof str === "undefined" || str == ""){
          	//	return options;
      	}
      else{
          		_this.$api.domain.domainGetDomainKeyRedis(para).then((res) =>
       {
          																												_this[paramName] = res.data.data.listDomainDefine;
      														}
          ).catch((err)=>
      {
          	    console.LOG(err);
      	  }
          );
      	}
      }
          

      使用

      引入js

      import {
      GetSelect}
           from '@/api/getSelect'

      取值

      //获取资源类型GetSelect(this,'resType','type');
          

      resType,是传递到后台方法的查询条件,

      就是在【域定义管理】中简称,点击【域值】按钮可看到对应的下拉框数据

      type,是接受查询出的list的参数,在页面中我定义了type: [],用来接收,资源类型下拉框中的值

      在页面中

      el-form-item label="类型" PRop="resType">
          		el-select v-model="adDForm.resType" filterable placeholder="请选择" style="width:100%">
          		el-option v-for="ITem in type" :key="item.key " :label="item.name" :value="item.key">
          		/el-option>
          	/el-select>
          					/el-form-item>
          

      在table中怎么去显示类型为中文名称

      el-table-column prop="ptType" label="类型" min-width="10%" :formatter="formatType" >
          			/el-table-column>
          

      注意: :formatter=“formatType”

      然后写一个方法formatType

      formatType: function (row, column) {
          //类型转换								for(VAR a = 0 ;
          a this.options.length ;
       a++){
      					if(row.ptType == this.options[a].key){
          						return this.options[a].name;
      					}
      				}
      							}
          ,

      vue封装远程下拉框组件

      之前封装了一个远程搜索的输入框,静态在Vue官网看到一个类似的远程搜索下拉框,今天也封装一个远程搜索下拉框,面对不同的需求

      我们修改了官方提供的代码来封装了

      父组件

      RemoteSeArch.vue

      vue的参数是可以通过封装在Props内,被其他界面引用

      注意:

      一:js中在调用json格式数组的值的时候——有两种形式

      以下为dataList数组

      • 形式一:dataList[0].name
      • 形式二:dataList[0][name]

      在有些时候会把**.变量**识别成调用,所以在一些情况下使用第二个效果更好

      js的数组手动设置值(给dataList设置一个value值)

      dataList.value = ?

      以下为引用的vue界面

      template>
            div>
              RemoteSearch :choose-flag="0" :auto-complete-column="name" ref="refreshData">
          /RemoteSearch>
              el-button type="Primary" @click="refreshChartSearch" style="margin-left: 10px">
          重置/el-button>
            /div>
          /template>
          script>
          import RemoteSearch from "@/components/select/RemoteSearch";
      export default {
        components: {
          RemoteSearch  }
      ,  data(){
          return {
          }
        }
      ,  methods:{
          refreshChartSearch(){
                this.$nextTick(() =>
       {
                  this.$refs.refreshData.refreshData();
              //DOM渲染完毕后就能正常获取了      }
      )    }
      ,  }
      ,}
          /script>
          style scoped>
          /style>
          

      只需要通过import导入对应的组件,通过components来调用,并通过类似标签的形式来声明

      子组件通过父组件提供的props的参数重写(修改)父组件的参数

      如果子组件不调用,props的参数就会是默认的值。

      子组件可以通过在标签内使用:特定值的方式来修改值

      重置的按钮实现,可以参考之前封装远程搜索输入框的帖子

      这里父组件的placeholder也可以做成让子组件自己选择的,但是我这里的形式比较通用,就没有修改,有兴趣的可以自行优化

      placeholder="请输入内容"

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

      您可能感兴趣的文章:
      • 手摸手教你实现Vue3 Reactivity
      • Vue3源码分析调度器与watch用法原理
      • Vue3中正确使用ElementPlus的示例代码
      • vue3中的对象时为proxy对象如何获取值(两种方式)
      • vue3源码分析reactivity实现原理

      声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


      若转载请注明出处: vue中下拉框组件的封装方式
      本文地址: https://pptw.com/jishu/609379.html
      vue axios接口请求封装方式 vue3中的对象时为proxy对象如何获取值(两种方式)

      游客 回复需填写必要信息