关于element ui中带建议的input框使用时无法获取到后台数据问题

本文介绍了如何在ElementUi中使用el-autocomplete组件实现动态模糊查询,通过向后台请求数据并绑定到vue实例的data中。关键在于将后台返回数据的键名改为'value',以匹配输入提示。在querySearch方法中,使用createFilter方法进行筛选,并在loadAll方法中获取和处理数据。在mounted生命周期钩子中初始化数据。
摘要由CSDN通过智能技术生成

       Element Ui中有个输入时同步给出建议的input组件,类似于动态的模糊查询,基本原理就是在挂载完成后就向后台发起一个请求,并将后台返回来的数据绑定在data里面,当使用这个输入框时就会直接去筛查前面存起来了数据,直接展示给客户。

       问题是将获取的值赋给restaurants后并未获得提示值,经过多次试验发现原来是需要将返回来的数据的键名改成value,这样提示才会显示出来。试验中,还尝试将createFilter()里的value值改成其它,也行不通,并且input框里输入的只能给出value里的提示。

代码如下:

<el-autocomplete
   v-model="orderruleForm.orderId"
   class="inline-input"
   :fetch-suggestions="querySearch"
   :trigger-on-focus="false"> 
</el-autocomplete>

<script>
  export default {
    data() {
      return {
        restaurants: [],
         newarr:[]
      };
    },
    methods: {
            querySearch(queryString, cb) {//获取input里的值并执行createFilter方法
                var restaurants = this.restaurants;
                var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
                // 调用 callback 返回建议列表的数据
                cb(results);
            },
            createFilter(queryString) {//设置一个筛选方法
                return (restaurant) => {
                    return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
                };
            },
            loadAll() {//向后台发起请求,获取数据
                this.$axios.get(this.$api.num2.serachnumber).then((res)=>{
                    res.data.data.forEach((item,index)=>{
                        let obj ={value:item.orderId}
                        this.newarr.push(obj)
                    })
                    this.restaurants =  this.newarr
                }).catch((err)=>{
                    console.log(err)
                })
            },
    },
    mounted() {
      this.restaurants = this.loadAll();
    }
  }
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值