欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

antdesgin 远程下拉框默认数据 a-select

程序员文章站 2022-03-01 14:58:32
...

antdesgin 远程下拉框默认数据 a-select

直接说重点填充默认数据为:

this.form.departmentName = { label: '苹果', value: 1 }
// 当label和value为空的时候,校验也会判断有值,需要根据情况赋值
需要在<a-select
        label-in-value="true"  // 这个属性返回label,value形式,必须的
      ></a-sellect>

粘贴的是 如下例子 官方文档

<template>
  <a-select
    mode="multiple"  // 这个是渲染标签模式,可以删除,
    label-in-value // 返回数据key,value形式,后端要求必选传递名字和id
    :value="value"  // v-model和value同义,官方:value(v-model)--指定当前选中的条目
    placeholder="Select users"
    style="width: 100%"  // 删除了
    :filter-option="false" // 默认为true,是否根据输入项进行筛选。当其为一个函数时,会接收 inputValue option 两个参数,当 option 符合筛选条件时,应返回 true,反之则返回 false。
    :not-found-content="fetching ? undefined : null" // 当下拉列表为空时显示的内容
    @search="fetchUser"  // 文本框值变化时回调
    @change="handleChange"  // 选中 option,或 input 的 value 变化(combobox 模式下)时,调用此函数
  >
    <a-spin v-if="fetching" slot="notFoundContent" size="small" />
    <a-select-option v-for="d in data" :key="d.value"> //下拉时渲染的数据
      {{ d.text }}
    </a-select-option>
  </a-select>
</template>
<script>
import debounce from 'lodash/debounce';

export default {
  data() {
    this.lastFetchId = 0;
    this.fetchUser = debounce(this.fetchUser, 800);
    return {
      data: [],
      value: [],
      fetching: false,
    };
  },
  methods: {
    fetchUser(value) {
      console.log('fetching user', value);
      this.lastFetchId += 1;
      const fetchId = this.lastFetchId; // 防止还没渲染完又发送数据
      this.data = [];
      this.fetching = true;
      fetch('https://randomuser.me/api/?results=5')
        .then(response => response.json())
        .then(body => {
          if (fetchId !== this.lastFetchId) {
            // for fetch callback order
            return;
          }
          const data = body.results.map(user => ({
            text: `${user.name.first} ${user.name.last}`,
            value: user.login.username,
          }));
          this.data = data;  // 下拉填充数据
          this.fetching = false;
        });
    },
    handleChange(value) {
    // 这里如果value绑定的值为form.departName可以写成
    // this.form.departName = value 
      Object.assign(this, {
        value, // 上面写了this.form.departName = value,这个就删除
        data: [],
        fetching: false,
      });
    },
  },
};
</script>

// 这个是我自己的数据
<a-select
          show-search
          :label-in-value="true"
          :default-value="data.departmentName"
          :value="form.departmentId"
          placeholder="请输入"
          :default-active-first-option="false"
          :show-arrow="false"
          :filter-option="false"
          :not-found-content="fetching ? undefined : null"
          @search="fetchUser"
          @change="handleChange"
          @select="handle"
          :disabled="flag"
        >
        //js 部分
         handleChange(value) {
      Object.assign(this, {
        dataList: [],
        fetching: false,
      })
      this.form.departmentId = value
    },
    handle(e) {
      this.value = e  // 这里是存储数据,id和value
    },
    fetchUser(value) {
      this.dataList = []
      this.fetching = true
      this.lastFetchId += 1
      const fetchId = this.lastFetchId
      getBuMen({
        depName: value,
      })
        .then((res) => {
          if (fetchId !== this.lastFetchId) {
            return
          }
          const data = res.data.map((data) => ({
            text: data.name,
            index: data.value,
          }))
          this.dataList = data
          this.fetching = false
        })
        .catch((res) => {})
    },