【element-ui】el-autocomplete自定义传参

需求:使用el-autocomplete实现轻量级搜索(联想输入)

结果遇到了有点tricky的地方,记录一下😉

1、首先绑定的值是借助了v-for循环的数据包生成,而非自定义

2、el-autocomplete的value-key属性决定单击下拉框后的回显

3、select事件可自定义传参

 @select="((item)=>{handleSelect(item, bankForm)})"

4、定义的事件彼此可以再调用,但要保证传参正确

代码片段如下:

                    <el-autocomplete   
                            class="inline-input"
                            v-model="bankForm[bank.display_field]"
                            :placeholder="bankForm[bank.display_field]"
                            :trigger-on-focus="false"
                            value-key="simp_name"
                            :debounce=0
                            size="mini"
                            :fetch-suggestions="loadBanks"
                            @select="((item)=>{handleSelect(item, bankForm)})"
                            ref="autocomplete"
                            @change="handleChange"
                            >
                      <template slot-scope="{ item }">
                        <div class="" :title="item.simp_name">{{ item.simp_name }}</div>
                      </template>
                    </el-autocomplete>
mounted: {
      loadBanks(vague,callback) {
        axios({
          method: 'post', url: '',
          data: {
            ajax: true, act: '', vague:vague,
          },
        }).then(response => {
          let resp = response.data;
          if (resp.success) {
            this.chooseBanks = resp.objectMap.banks;
            clearTimeout(this.timeout);
            this.timeout = setTimeout(() => {
              callback(this.chooseBanks);
            }, 100 * Math.random());
          } else {
            Valert({msg:resp.message});
          }
        }).catch(function (error) {
          Valert({msg:error});
        });
      },
      // 重存bankForm
      handleSelect(item, form){
        for(let key in form){
          if(item.simp_name == form[key]){
            if(key.substr(key.length - 1) == 'e'){
              this.bankForm.account_bank = item.def_bankcode;
            } else if (key.substr(key.length - 1) == '2'){
              this.bankForm.account_bank2 = item.def_bankcode;
            }
          }
        }
        this.flag = true;
      },
      // 判断银行
      handleChange(val){
        if(this.chooseBanks.length  == 0){
          this.flag = false;
        } else {
          for(let i = 0; i<this.chooseBanks.length;i++){
            if(val == this.chooseBanks[i].simp_name){
              this.handleSelect(this.chooseBanks[i],this.bankForm);
              return;
            }
          }
          this.flag = false;
        }
      },
},
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值