使用ElementUI下拉框 @change事件数据不回显

问题

在VUE中使用ElementUI的el-select下拉框,它是通过接口异步获取的下拉框数据,选择某一个值后,虽然在绑定的 @change 事件中能够看到已赋值成功,控制台输出也显示赋值操作完成数据变化,但是框上却没有显示选中的值。

解决方案

VUE它是无法监听动态新增的属性的变化,但是有一个方法可以为动态属性赋值,那就是$set。 

<template>
  <el-select
    v-model="value"
    multiple
    filterable
    allow-create
    default-first-option
    placeholder="请选择文章标签">
    @change="selectChange"
    <el-option
      v-for="item in options"
      :key="item.value"
      :label="item.label"
      :value="item.value">
    </el-option>
  </el-select>
</template>
 
<script>
  export default {
    data() {
      return {
        paper:[{
            title:'',
            author:''
        }]
        options: [{
          value: '1',
          label: 'HTML'
        }, {
          value: '2',
          label: 'CSS'
        }, {
          value: '3',
          label: 'JavaScript'
        }],
        value: []
      }
    },methods{
        // 操作下拉框选中事件
        selectChange(val) {
            const title = this.options.find(item=>item.value===val).label   
            this.$set(this.paper, this.paper.title, title)    
        }
    }
  }
</script>

VUE下拉框数据及数据回显问题

下拉框默认显示第一个数据,及获取下拉框中选择的任意数据:

<label>类型:</label>
 <select v-model="value_type" @change="getvalue_typeected(value_type)">
   <option :value="item" v-for="item in types" :key="item">{{
     item
   }}</option>
 </select>

export default {
    data(){
        return {
            value_type: "",
              types: ["STRING", "BOOLEAN", "INTEGER",'DATETIME','DATE'],
        }
    },
    created(){
        //下拉框默认显示第一个
        this.value_type = this.types[0];
    },
    methods:{
        getvalue_typeected(val) {
          this.value_type = val;
        },
    }
}

下拉框数据回显:

getCurIdData() {
  this.$http
    .get(`/api/${id}`)
    .delegateTo(api_request)
    .then((data) => {
      this.value_type= data.value_type;
    });
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持阿兔在线工具。

点赞(0)

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部