antdesgin 远程下拉框默认数据 a-select
程序员文章站
2022-03-01 14:58:32
...
直接说重点填充默认数据为:
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) => {})
},
推荐阅读
-
解决MSSQL2005远程连接sql2000非默认端口数据库的问题
-
layui 根据后台数据动态创建下拉框并同时默认选中的实例
-
Ext6 treePanel默认加载两级或多级本地树信息其他加载远程数据
-
Ext6 treePanel默认加载两级或多级本地树信息其他加载远程数据
-
解决MSSQL2005远程连接sql2000非默认端口数据库的问题
-
Select2在使用ajax获取远程数据时显示默认数据的方法
-
WPF DataGrid ComboBox 下拉框数据绑定。且默认显示下拉框,可与其他列绑定联动。
-
layui 根据后台数据动态创建下拉框并同时默认选中的实例
-
select2 ajax 远程获取下拉框默认显示数据, 无需输入
-
Element / Select下拉框 / 动态加载数据 + 远程搜索