Vue item list selector

演示

支持多选与单选

Props

value/v-model

  • type: Function
  • default: []

组件绑定值,多选模式下需要为 Array 。

optionsData

  • type: Array/Promise/Function
  • default: []

选项数据,子项为 object 类型时候,可配合 labelKeyvalueKey 配置选项文本属性和要提交给 value 的属性。

为 Function 类型时,可直接 return 数据,或使用接受参数内的回调函数响应:

{
  optionsData: (done) => {
    const result = []
    // return result
    // or
    // some sync/async works
    done(result)
  }
}

multiple

  • type: Boolean
  • default: true

是否多选模式。

loadingText

  • type: String
  • default: 'Loading...'

如果 optionsData 为异步方式时,加载时的显示文本。

notFoundText

  • type: String
  • default: 'No results'

未搜索到匹配数据时的显示文本。

searchText

  • type: String
  • default: 'Search'

显示在搜索框的 Placeholder 。

splitKeyword

  • type: Boolean
  • default: true

搜索时是否通过空格拆分进行多关键字匹配。

matchTemplate

  • type: Function
  • default: t => `<mark>${t}</mark>`

搜索匹配时的文本格式化方法。

labelKey

  • type: String
  • default: 'label'

optionsData 子项为 object 类型,通过该属性配置选项显示文本。若没有配置 optionTemplate 的话,其对应的结果还会作为搜索功能的搜索文本。

valueKey

  • type: String
  • default: undefined

optionsData 子项为 object 类型,通过该属性配置要绑定给 value/v-model 的值。默认会提交整个对象,通过该属性也可实现默认值的绑定:

data() {
  return {
    value: 1
    optionsData: [
      { label: 'label-1', value: 1 },
      { label: 'label-2', value: 2 }
    ]
  }
}

optionTemplate

  • type: Function
  • default: undefined
  • params: (option)

选项文本格式化方法,该方法必须返回字符串,返回内容也会作为搜索功能的搜索文本。

若要自定义选项 html 内容,请使用 slot option-template

filterMethod

  • type: Function
  • default: undefined
  • params: (option, keyword)

自定义搜索方法,参数 option 为选项单项子项, keyword 为当前搜索关键字,返回 true 即表示命中。内部默认匹配方式为 @laomao800/mark-match

optionHeight

  • type: Number
  • default: 34

每个选项样式高度,用于虚拟滚动效果计算。

optionsRemain

  • type: Number
  • default: 6

默认显示选项数量。

optionsBench

  • type: Number
  • default: 6

虚拟滚动效果屏幕外选项数量。

Events

Events Description
change 绑定值改变时触发
options-inited optionsData 加载完成时触发

Methods

Methods Params Description
setValue(filterFn) filterFn: (option) => boolean filterFn 过滤的新值替换当前绑定值
addValue(filterFn) filterFn: (option) => boolean 从绑定值内添加由 filterFn 过滤的值
removeValue(filterFn) filterFn: (option) => boolean 从绑定值内删除由 filterFn 过滤的值
reset() - 清空绑定值

Slots

option-template

Slot prop Info
option optionsData 单条选项的原始数据项
keyword 当前搜索关键字
selected 当条选项是否为选中状态