1. 程式人生 > 程式設計 >ant-design-vue中的select選擇器,對輸入值的進行篩選操作

ant-design-vue中的select選擇器,對輸入值的進行篩選操作

今天在設計一個標籤(採用的是Select 選擇器中的標籤那一個)時,從後臺返回了資料,但是在輸入值時,沒有對回顯的值進行過濾匹配,通過檢視官方文件,解決了這個問題。

記在這裡方便以後檢視。

ant-design-vue中的select選擇器,對輸入值的進行篩選操作

 <a-form-item label='標籤' v-bind="formItemLayout">
  <a-select
   mode="tags"
   :allowClear="true"
   :filterOption="filterOption"
   style="width: 100%"
   v-decorator="['tag',{rules: [{ required: true,message: '請選擇標籤' }]}]">
   <a-select-option v-for="t in tags" :key="t.id.toString()">{{t.tagName}}</a-select-option>
  </a-select>
</a-form-item>

methods中:

filterOption(input,option) {
  return (
   option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
  );
},

其中對於過濾起作用的是filterOption

官網上對其的解釋:

ant-design-vue中的select選擇器,對輸入值的進行篩選操作

補充知識:ant design的Select下拉選擇器 帶搜尋功能

在做專案的過程中,可能會遇到 下拉框內容較多,為了方便使用者選擇加入檢索功能。

用法

利用ant design 中的select選擇器完成此功能。

首先 要獲取下拉選擇內容資料,和普通下拉選的資料結構一致,陣列物件 鍵值對。

然後把資料渲染到選擇器中,我在專案中 遇到的是資料較多,但是為了防止資料下拉較長,後端返回資料做了類似分頁處理,每次返回10條資料,那在獲取初始資料時其實就獲取了十條資料。

把資料放到一個空陣列中,然後渲染到選擇器中。

componentDidMount() {
 const { dispatch } = this.props;
 dispatch({
  type: 'project/searchProject',payload: { },callback: (res) => {
  this.setState({
   data: res.data
  })
  }
 });
 }
const children = [];
data.forEach(d => {
 children.push(<Option key={d.id}>{d.name}</Option>);
})
<Select
 showSearch
 allowClear
 labelInValue
 placeholder="請選擇專案"
 optionFilterProp="children"
 onSearch={this.handleSearch}
 onChange={this.handleChange}
 filterOption={(input,option) =>
  option.props.children[0].toLowerCase().indexOf(input.toLowerCase()) >= 0
 }
 >
 {children}
 </Select>

那在觸發搜尋功能的時候,其實只是搜尋了10條內容,那在onSearch中還有去請求其他資料。

handleSearch = value => {
 const { dispatch } = this.props;
 dispatch({
  type: 'project/searchProject',payload: {
  q: value
  },callback: (res) => {
  this.setState({
   data: res.data
  })
  }
 });
};

如果輸錯了搜尋內容,往回刪除修改的時候還需要去請求一次資料,觸發了onChange事件。

handleChange = value => {
 const { dispatch } = this.props;
 dispatch({
  type: 'project/searchProject',callback: (res) => {
  this.setState({
   data: res.data
  })
  }
 });
 };

現在功能完成了。

效果圖如下:

ant-design-vue中的select選擇器,對輸入值的進行篩選操作

以上這篇ant-design-vue中的select選擇器,對輸入值的進行篩選操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。