AutoComplete 自动完成

概述

输入框自动完成功能。

代码示例

AutoComplete 自动完成 - 图1

基础用法

基本用法,通过 data 设置自动完成的数据源。

  1. <template>
  2. <AutoComplete
  3. v-model="value1"
  4. :data="data1"
  5. @on-search="handleSearch1"
  6. placeholder="input here"
  7. style="width:200px"></AutoComplete>
  8. </template>
  9. <script>
  10. export default {
  11. data () {
  12. return {
  13. value1: '',
  14. data1: []
  15. }
  16. },
  17. methods: {
  18. handleSearch1 (value) {
  19. this.data1 = !value ? [] : [
  20. value,
  21. value + value,
  22. value + value + value
  23. ];
  24. }
  25. }
  26. }
  27. </script>

AutoComplete 自动完成 - 图2

自定义选项

除了使用 data,还可以直接传入 Option 组件作为 slot 使用,这样可以自定义显示效果。

  1. <template>
  2. <AutoComplete
  3. v-model="value2"
  4. @on-search="handleSearch2"
  5. placeholder="input here"
  6. style="width:200px">
  7. <Option v-for="item in data2" :value="item" :key="item">{{ item }}</Option>
  8. </AutoComplete>
  9. </template>
  10. <script>
  11. export default {
  12. data () {
  13. return {
  14. value2: '',
  15. data2: []
  16. }
  17. },
  18. methods: {
  19. handleSearch2 (value) {
  20. this.data2 = !value || value.indexOf('@') >= 0 ? [] : [
  21. value + '@qq.com',
  22. value + '@sina.com',
  23. value + '@163.com'
  24. ];
  25. }
  26. }
  27. }
  28. </script>

AutoComplete 自动完成 - 图3

不区分大小写

不区分大小写的 AutoComplete,及过滤的用法。

  1. <template>
  2. <AutoComplete
  3. v-model="value3"
  4. :data="data3"
  5. :filter-method="filterMethod"
  6. placeholder="input here"
  7. style="width:200px">
  8. </AutoComplete>
  9. </template>
  10. <script>
  11. export default {
  12. data () {
  13. return {
  14. value3: '',
  15. data3: ['Steve Jobs', 'Stephen Gary Wozniak', 'Jonathan Paul Ive']
  16. }
  17. },
  18. methods: {
  19. filterMethod (value, option) {
  20. return option.toUpperCase().indexOf(value.toUpperCase()) !== -1;
  21. }
  22. }
  23. }
  24. </script>

AutoComplete 自动完成 - 图4

查询模式

完全自定义 Option,显示复杂的布局。

  1. <template>
  2. <AutoComplete
  3. v-model="value4"
  4. icon="ios-search"
  5. placeholder="input here"
  6. style="width:300px">
  7. <div class="demo-auto-complete-item" v-for="item in data4">
  8. <div class="demo-auto-complete-group">
  9. <span>{{ item.title }}</span>
  10. <a href="https://www.google.com/search?q=iView" target="_blank">更多</a>
  11. </div>
  12. <Option v-for="option in item.children" :value="option.title" :key="option.title">
  13. <span class="demo-auto-complete-title">{{ option.title }}</span>
  14. <span class="demo-auto-complete-count">{{ option.count }} 人关注</span>
  15. </Option>
  16. </div>
  17. <a href="https://www.google.com/search?q=iView" target="_blank" class="demo-auto-complete-more">查看所有结果</a>
  18. </AutoComplete>
  19. </template>
  20. <script>
  21. export default {
  22. data () {
  23. return {
  24. value4: '',
  25. data4: [
  26. {
  27. title: '话题',
  28. children: [
  29. {
  30. title: 'iView',
  31. count: 10000,
  32. },
  33. {
  34. title: 'iView UI',
  35. count: 10600,
  36. }
  37. ]
  38. },
  39. {
  40. title: '问题',
  41. children: [
  42. {
  43. title: 'iView UI 有多好',
  44. count: 60100,
  45. },
  46. {
  47. title: 'iView 是啥',
  48. count: 30010,
  49. }
  50. ]
  51. },
  52. {
  53. title: '文章',
  54. children: [
  55. {
  56. title: 'iView 是一个设计语言',
  57. count: 100000,
  58. }
  59. ]
  60. }
  61. ]
  62. }
  63. }
  64. }
  65. </script>
  66. <style>
  67. .demo-auto-complete-item{
  68. padding: 4px 0;
  69. border-bottom: 1px solid #F6F6F6;
  70. }
  71. .demo-auto-complete-group{
  72. font-size: 12px;
  73. padding: 4px 6px;
  74. }
  75. .demo-auto-complete-group span{
  76. color: #666;
  77. font-weight: bold;
  78. }
  79. .demo-auto-complete-group a{
  80. float: right;
  81. }
  82. .demo-auto-complete-count{
  83. float: right;
  84. color: #999;
  85. }
  86. .demo-auto-complete-more{
  87. display: block;
  88. margin: 0 auto;
  89. padding: 4px;
  90. text-align: center;
  91. font-size: 12px;
  92. }
  93. </style>

API

AutoComplete props

属性 说明 类型 默认值
value 绑定的值,可使用 v-model 双向绑定 String | Number -
data 自动完成的数据源 Array []
clearable 是否可以清空选项 Boolean false
disabled 是否禁用 Boolean false
placeholder 占位文本 String -
size 输入框尺寸,可选值为 largesmalldefault 或者不设置 String -
icon 输入框尾部图标 String -
filter-method 是否根据输入项进行筛选。当其为一个函数时,会接收 valueoption 两个参数,当 option 符合筛选条件时,应返回 true,反之则返回 false Function | Boolean false
placement 弹窗的展开方向,可选值为 bottomtoptop-startbottom-starttop-endbottom-end,2.12.0 版本开始支持自动识别 String bottom-start
transfer 是否将弹层放置于 body 内,在 Tabs、带有 fixed 的 Table 列内使用时,建议添加此属性,它将不受父级样式影响,从而达到更好的效果 Boolean false
element-id 给表单元素设置 id,详见 Form 用法。 String -

AutoComplete events

事件名 说明 返回值
on-change 选中 option,或 input 的 value 变化时,调用此函数 value
on-select 被选中时调用,参数为选中项的 value 值 value
on-search 搜索补全项的时候调用 query
on-focus 聚焦时触发 event
on-blur 失焦时触发 event
on-clear 3.3.0 清空时触发