美文网首页Vue.jsangular2与vue的那些事Vue.js开发技巧
基于vue的Element-ui定义自己的select组件

基于vue的Element-ui定义自己的select组件

作者: 阿踏 | 来源:发表于2018-05-29 15:21 被阅读8次
    <template>
      <div>
        <el-select v-model="svalue" placeholder="请选择" filterable>
          <el-option
            v-for="item in options"
            :key="item.value"
            :label="item.label"
            :value="item.value">
          </el-option>
        </el-select>
        <!-- <el-button @click="clickme()">默认按钮</el-button> -->
        <!-- <input type="text" :value="value"> -->
      </div>
    </template>
    
    <script>
      export default {
        name: 'XdhSelect',
        data() {
          return {
            options:[],
            svalue: ''
          }
        },
        methods: {
            // clickme(){
            //     alert(this.svalue);
            // },
            //转换下拉框下的字段
           _dataTransform(data){
              let _data = [];
              for (let i = 0; i < data.length; i++) {
                  _data[i] = {};
                  _data[i].label = data[i][this.fileType.label];
                  _data[i].value = data[i][this.fileType.value];
                }
                return _data;
           }
         },
         watch:{
            //判断下拉框的值是否有改变
            svalue(val, oldVal) {
                // console.log('new: %s, old: %s', val, oldVal)
                if(val!=oldVal){
                    this.$emit('input', this.svalue); 
                }
            }, 
        },
        props: {
           url:{
              type:String
           },//导入的url地址
           value: {
              type: String
           },//接受外部v-model传入的值
           fileType:{
              type:Object
           }//定义请求回来的json数据格式
        },
        mounted(){
            //初始话下拉框的值
            this.svalue=this.value;
            //远程请求回来的数据
            this.$fetch(this.url)
                .then((response) => {
                    this.options=this._dataTransform(response);
            })
        }
      }
    </script>
    
    

    组件用法

    <xdh-select :url="'/api/option'" v-model="isShow" :fileType="{'value':'dasm','label':'dasmb'}"></xdh-select>
    

    url为请求连接,fileType为返回的数据格式

    相关文章

      网友评论

      • cd6f23f1a64d:如果同一个页面,重复使用这个组件,会发起重复的请求?
        阿踏:@Wo该如何存在 会的
      • 恒果果:请问有没有数据测试api接口
      • IT人故事会:赞,找了好久才找到!

      本文标题:基于vue的Element-ui定义自己的select组件

      本文链接:https://www.haomeiwen.com/subject/nykajftx.html