码迷,mamicode.com
首页 > 其他好文 > 详细

el-select的简单封装,使其返回值中包含key,value,obj 三种值

时间:2020-05-19 12:50:57      阅读:41      评论:0      收藏:0      [点我收藏+]

标签:model   test   upd   sel   null   export   value   返回值   return   

常规的el-select中change事件返回值,只有key返回,业务上有些需求有需要获取到value值,所以简单的封装了一下,使返回中包含key,value,obj三个值,基本上可以满足大部分的需求

封装代码

<template>
  <div>
    <el-select v-model="v" :placeholder="‘请选择‘+placeholder" @change="change">
      <el-option
        v-for="item in options"
        :key="item[value]"
        :label="item[label]"
        :value="item[value]"
      ></el-option>
    </el-select>
  </div>
</template>

<script>
export default {
  computed: {
    v: {
      get() {
        return this.val;
      },
      set(e) {
        this.$emit("update:val", e);
      }
    }
  },
  props: {
    val: {
      default: ""
    },
    options: {
      type: [Object, Array],
      default() {
        return null;
      }
    },
    label: {
      default: "label"
    },
    value: {
      default: "value"
    },
    placeholder: {
      default: ""
    }
  },
  methods: {
    change(e) {
      let options = this.options;
      options.find(v => {
        if (v[this.value] == e) {
          this.$emit("change", e, [this.label], v);
          return;
        }
      });
    }
  }
};
</script>

<style>
</style>

调用代码

<template>
  <div>
      <!-- 代码封装命名为CSelect.vue --> 
    <c-select :options="options" :val.sync="val" @change="test"></c-select>
  </div>
</template>


<script>
export default {
  methods: {
    test(a, b, c) {
      console.log("test -> c", c);
      console.log("test -> b", b);
      console.log("test -> a", a);
    },
  },
  data() {
    return {
      val: "1",//可以给默认值
      options: [
        {
          label: "测试1",
          value: "1"
        },
        {
          label: "测试2",
          value: "2"
        }
      ]
    };
  }
};
</script>

el-select的简单封装,使其返回值中包含key,value,obj 三种值

标签:model   test   upd   sel   null   export   value   返回值   return   

原文地址:https://www.cnblogs.com/chendada/p/12915908.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!