之前写了.一个原生的select的,因为展示效果原因,给删除掉了,忘记保存代码了,现在大家展示使用elementUI的下拉框封装一个组件,供咱们项目中经常调用,减少代码量.

html

 

<el-select v-model="ite" placeholder="请选择" value-key="mateGroup">
      <el-option style="width: auto" :disabled="true" :value="null">
        <span style="float: left;font-weight: bold">周次  </span>
        <span style="float: left; color: #8492a6; font-size: 13px; font-weight: bold">  开始日期  </span>
        <span style="float: right; color: #8492a6; font-size: 13px; font-weight: bold"> 截止日期 </span>
      </el-option>
      <el-option v-for="(item,index) in res" :key="index" :label="item.mateGroup" v-bind:value="item">
        <span style="float: left; color: #8492a6; font-size: 13px">{{ item.mateGroup }}  </span>
        <span style="float: left; color: #8492a6; font-size: 13px"> {{ item.weekStartDate }}   </span>
        <span style="float: right">{{ item.weekEndDate }}</span>
      </el-option>
    </el-select>


Js:

 

 

 

 

<script>
  import jQuery from 'jquery'
  export default {
    props: ['orgCode', 'farmOrg'],
    data () {
      return {
        res: [],
        ite: '',
        weekse: ''
      }
    },
    created: function () {
      var _self = this
      _self.getWeekYearly()
    },
    watch: {
      ite: function (val) {
        this.weekse = val
        console.log(this.weekse)
        this.getL()
      }
    },
    methods: {
      getWeekYearly () {
        var _self = this
        jQuery.ajax({
          url: '/standard/' + _self.orgCode + '/' + _self.farmOrg + '/getWeekly',
          type: 'GET',
          //  contentType: 'application/json',
          dataType: 'json',
          success: function (res) {
            _self.res = res
          },
          fail: function (e) {
//            this.tableFlag = false
            alert('请求失败')
            console.log('查询失败')
          }
        })
      },
      getL: function () {
        var _self = this
        _self.$emit('getL', _self.weekse)
      }
    }
  }
</script>


下来我给大家说一下这个页面都做了什么-

 

a.在页面刚开始加载时候,通过create 调用了我们的一个方法.发送ajax.获取到下拉框该显示的值.

b.通过给select绑定一个model来监视和获取选中后的值.这里是ite

c.此处第一行option,我们写了一个固定表头, 以下通过option是通过created: funtion() 试页面加载后,立即访问后台,查询数据库,获取的下拉列表值,进行显示.

d.这里的value值.我们绑定成这条数据对象item.

Ps:这里大家肯定会想这不是很简单么?但是这里有一个坑,就是你选取的每一个值都会在下拉框中,显示成最后一个,但是实际value值是你选取的这个对象…看一看,是不是出现了,这个问题.

这个问题出现的原因是,在你option绑定key,和value时.该这些数据中有重复值导致的,造成数据对应不起..

这个问题我们需要怎么解决呢,Select值为对象类型时,需要提供一个 value-key 作为唯一性标识

 

e.我们通过watch监听咱们select的model,在这个监听里面调用一个给父组件传值的方法..将咱们的item提供给父组件使用.

 

Logo

前往低代码交流专区

更多推荐