@@ -305,7 +305,7 @@ export default {
305
305
306
306
根据输入内容提供对应的输入建议
307
307
308
- :::demo autocomplete 是一个可带输入建议的输入框组件,` fetch-suggestions ` 是一个返回输入建议的方法属性,如 querySearch(queryString, cb),在该方法中你可以在你的输入建议数据准备好时通过 cb(data) 返回到 autocomplete 组件中。
308
+ :::demo autocomplete 是一个可带输入建议的输入框组件,` fetch-suggestions ` 是一个返回输入建议的方法属性,如 querySearch(queryString, cb),在该方法中你可以在你的输入建议数据准备好时通过 cb(data) 返回到 autocomplete 组件中。autocomplete支持所有input组件的属性
309
309
``` html
310
310
<el-row class =" demo-autocomplete" >
311
311
<el-col :span =" 12" >
@@ -316,6 +316,8 @@ export default {
316
316
:fetch-suggestions =" querySearch"
317
317
placeholder =" 请输入内容"
318
318
@select =" handleSelect"
319
+ clearable
320
+ :debounce =" 0"
319
321
></el-autocomplete >
320
322
</el-col >
321
323
<el-col :span =" 12" >
@@ -327,6 +329,7 @@ export default {
327
329
placeholder =" 请输入内容"
328
330
:trigger-on-focus =" false"
329
331
@select =" handleSelect"
332
+ clearable
330
333
></el-autocomplete >
331
334
</el-col >
332
335
</el-row >
@@ -340,11 +343,107 @@ export default {
340
343
};
341
344
},
342
345
methods: {
343
- querySearch (queryString , cb ) {
346
+ querySearch (queryString ) {
344
347
var restaurants = this .restaurants ;
345
- var results = queryString ? restaurants .filter (this .createFilter (queryString)) : restaurants;
346
- // 调用 callback 返回建议列表的数据
347
- cb (results);
348
+ // 如果无需调用接口,你可以直接返回一个数组
349
+ return queryString ? restaurants .filter (this .createFilter (queryString)) : restaurants;
350
+ },
351
+ createFilter (queryString ) {
352
+ return (restaurant ) => {
353
+ return (restaurant .value .toLowerCase ().indexOf (queryString .toLowerCase ()) === 0 );
354
+ };
355
+ },
356
+ loadAll () {
357
+ return [
358
+ { " value" : " 三全鲜食(北新泾店)" , " address" : " 长宁区新渔路144号" },
359
+ { " value" : " Hot honey 首尔炸鸡(仙霞路)" , " address" : " 上海市长宁区淞虹路661号" },
360
+ { " value" : " 新旺角茶餐厅" , " address" : " 上海市普陀区真北路988号创邑金沙谷6号楼113" },
361
+ { " value" : " 泷千家(天山西路店)" , " address" : " 天山西路438号" },
362
+ { " value" : " 胖仙女纸杯蛋糕(上海凌空店)" , " address" : " 上海市长宁区金钟路968号1幢18号楼一层商铺18-101" },
363
+ { " value" : " 贡茶" , " address" : " 上海市长宁区金钟路633号" },
364
+ { " value" : " 豪大大香鸡排超级奶爸" , " address" : " 上海市嘉定区曹安公路曹安路1685号" },
365
+ { " value" : " 茶芝兰(奶茶,手抓饼)" , " address" : " 上海市普陀区同普路1435号" },
366
+ { " value" : " 十二泷町" , " address" : " 上海市北翟路1444弄81号B幢-107" },
367
+ { " value" : " 星移浓缩咖啡" , " address" : " 上海市嘉定区新郁路817号" },
368
+ { " value" : " 阿姨奶茶/豪大大" , " address" : " 嘉定区曹安路1611号" },
369
+ { " value" : " 新麦甜四季甜品炸鸡" , " address" : " 嘉定区曹安公路2383弄55号" },
370
+ { " value" : " Monica摩托主题咖啡店" , " address" : " 嘉定区江桥镇曹安公路2409号1F,2383弄62号1F" },
371
+ { " value" : " 浮生若茶(凌空soho店)" , " address" : " 上海长宁区金钟路968号9号楼地下一层" },
372
+ { " value" : " NONO JUICE 鲜榨果汁" , " address" : " 上海市长宁区天山西路119号" },
373
+ { " value" : " CoCo都可(北新泾店)" , " address" : " 上海市长宁区仙霞西路" },
374
+ { " value" : " 快乐柠檬(神州智慧店)" , " address" : " 上海市长宁区天山西路567号1层R117号店铺" },
375
+ { " value" : " Merci Paul cafe" , " address" : " 上海市普陀区光复西路丹巴路28弄6号楼819" },
376
+ { " value" : " 猫山王(西郊百联店)" , " address" : " 上海市长宁区仙霞西路88号第一层G05-F01-1-306" },
377
+ { " value" : " 枪会山" , " address" : " 上海市普陀区棕榈路" },
378
+ { " value" : " 纵食" , " address" : " 元丰天山花园(东门) 双流路267号" },
379
+ { " value" : " 钱记" , " address" : " 上海市长宁区天山西路" },
380
+ { " value" : " 壹杯加" , " address" : " 上海市长宁区通协路" },
381
+ { " value" : " 唦哇嘀咖" , " address" : " 上海市长宁区新泾镇金钟路999号2幢(B幢)第01层第1-02A单元" },
382
+ { " value" : " 爱茜茜里(西郊百联)" , " address" : " 长宁区仙霞西路88号1305室" },
383
+ { " value" : " 爱茜茜里(近铁广场)" , " address" : " 上海市普陀区真北路818号近铁城市广场北区地下二楼N-B2-O2-C商铺" },
384
+ { " value" : " 鲜果榨汁(金沙江路和美广店)" , " address" : " 普陀区金沙江路2239号金沙和美广场B1-10-6" },
385
+ { " value" : " 开心丽果(缤谷店)" , " address" : " 上海市长宁区威宁路天山路341号" },
386
+ { " value" : " 超级鸡车(丰庄路店)" , " address" : " 上海市嘉定区丰庄路240号" },
387
+ { " value" : " 妙生活果园(北新泾店)" , " address" : " 长宁区新渔路144号" },
388
+ { " value" : " 香宜度麻辣香锅" , " address" : " 长宁区淞虹路148号" },
389
+ { " value" : " 凡仔汉堡(老真北路店)" , " address" : " 上海市普陀区老真北路160号" },
390
+ { " value" : " 港式小铺" , " address" : " 上海市长宁区金钟路968号15楼15-105室" },
391
+ { " value" : " 蜀香源麻辣香锅(剑河路店)" , " address" : " 剑河路443-1" },
392
+ { " value" : " 北京饺子馆" , " address" : " 长宁区北新泾街道天山西路490-1号" },
393
+ { " value" : " 饭典*新简餐(凌空SOHO店)" , " address" : " 上海市长宁区金钟路968号9号楼地下一层9-83室" },
394
+ { " value" : " 焦耳·川式快餐(金钟路店)" , " address" : " 上海市金钟路633号地下一层甲部" },
395
+ { " value" : " 动力鸡车" , " address" : " 长宁区仙霞西路299弄3号101B" },
396
+ { " value" : " 浏阳蒸菜" , " address" : " 天山西路430号" },
397
+ { " value" : " 四海游龙(天山西路店)" , " address" : " 上海市长宁区天山西路" },
398
+ { " value" : " 樱花食堂(凌空店)" , " address" : " 上海市长宁区金钟路968号15楼15-105室" },
399
+ { " value" : " 壹分米客家传统调制米粉(天山店)" , " address" : " 天山西路428号" },
400
+ { " value" : " 福荣祥烧腊(平溪路店)" , " address" : " 上海市长宁区协和路福泉路255弄57-73号" },
401
+ { " value" : " 速记黄焖鸡米饭" , " address" : " 上海市长宁区北新泾街道金钟路180号1层01号摊位" },
402
+ { " value" : " 红辣椒麻辣烫" , " address" : " 上海市长宁区天山西路492号" },
403
+ { " value" : " (小杨生煎)西郊百联餐厅" , " address" : " 长宁区仙霞西路88号百联2楼" },
404
+ { " value" : " 阳阳麻辣烫" , " address" : " 天山西路389号" },
405
+ { " value" : " 南拳妈妈龙虾盖浇饭" , " address" : " 普陀区金沙江路1699号鑫乐惠美食广场A13" }
406
+ ];
407
+ },
408
+ handleSelect (item ) {
409
+ console .log (item);
410
+ }
411
+ },
412
+ mounted () {
413
+ this .restaurants = this .loadAll ();
414
+ }
415
+ }
416
+ </script >
417
+ ```
418
+ :::
419
+
420
+ ### 取得焦点时显示所有备选项
421
+
422
+ 当用户已经选择了某项时再次过滤通常只能得到一条备选项,用处不是很大。这时可以使用` show-all-on-focus ` 指定获得焦点时显示所有备选项而不基于文本框中的文字过滤
423
+
424
+ ::: demo
425
+ ``` html
426
+ <el-autocomplete
427
+ class =" inline-input"
428
+ v-model =" state"
429
+ :fetch-suggestions =" querySearch"
430
+ placeholder =" 请输入内容"
431
+ @select =" handleSelect"
432
+ :debounce =" 0"
433
+ show-all-on-focus
434
+ ></el-autocomplete >
435
+ <script >
436
+ export default {
437
+ data () {
438
+ return {
439
+ restaurants: [],
440
+ state: ' 三全鲜食(北新泾店)' ,
441
+ };
442
+ },
443
+ methods: {
444
+ querySearch (queryString ) {
445
+ var restaurants = this .restaurants ;
446
+ return queryString ? restaurants .filter (this .createFilter (queryString)) : restaurants;
348
447
},
349
448
createFilter (queryString ) {
350
449
return (restaurant ) => {
@@ -469,11 +568,10 @@ export default {
469
568
};
470
569
},
471
570
methods: {
472
- querySearch (queryString , cb ) {
571
+ querySearch (queryString ) {
473
572
var restaurants = this .restaurants ;
474
- var results = queryString ? restaurants .filter (this .createFilter (queryString)) : restaurants;
475
- // 调用 callback 返回建议列表的数据
476
- cb (results);
573
+ // 也可以返回 Promise 作为列表数据
574
+ return Promise .resolve (queryString ? restaurants .filter (this .createFilter (queryString)) : restaurants);
477
575
},
478
576
createFilter (queryString ) {
479
577
return (restaurant ) => {
@@ -627,6 +725,7 @@ export default {
627
725
628
726
clearTimeout (this .timeout );
629
727
this .timeout = setTimeout (() => {
728
+ // 也可以使用回调函数
630
729
cb (results);
631
730
}, 3000 * Math .random ());
632
731
},
@@ -742,13 +841,14 @@ export default {
742
841
743
842
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
744
843
| ------------- | ---------------- | ---------------- | ---------------------- | -------- |
745
- | placeholder | 输入框占位文本 | string | — | — |
746
- | disabled | 禁用 | boolean | — | false |
844
+ | placeholder | 输入框占位文本 | string | — | — |
845
+ | disabled | 禁用 | boolean | — | false |
846
+ | clearable | 是否显示清空图标 | boolean | — | false |
747
847
| value-key | 输入建议对象中用于显示的键名 | string | — | value |
748
848
| value | 必填值,输入绑定值 | string | — | — |
749
849
| debounce | 获取输入建议的去抖延时 | number | — | 300 |
750
850
| placement | 菜单弹出位置 | string | top / top-start / top-end / bottom / bottom-start / bottom-end | bottom-start |
751
- | fetch-suggestions | 返回输入建议的方法,仅当你的输入建议数据 resolve 时,通过调用 callback(data:[ ] ) 来返回它 | Function(queryString, callback) | — | — |
851
+ | fetch-suggestions | 返回输入建议的方法。你可以直接返回一个数组的 Promise,也可以当你的输入建议数据 resolve 时,通过调用 callback(data:[ ] ) 来返回它 | Function(queryString, callback) | — | — |
752
852
| popper-class | Autocomplete 下拉列表的类名 | string | — | — |
753
853
| trigger-on-focus | 是否在输入框 focus 时显示建议列表 | boolean | — | true |
754
854
| name | 原生属性 | string | — | — |
@@ -759,6 +859,7 @@ export default {
759
859
| hide-loading | 是否隐藏远程加载时的加载图标 | boolean | — | false |
760
860
| popper-append-to-body | 是否将下拉列表插入至 body 元素。在下拉列表的定位出现问题时,可将该属性设置为 false | boolean | - | true |
761
861
| highlight-first-item | 是否默认突出显示远程搜索建议中的第一项 | boolean | — | false |
862
+ | show-all-on-focus | 是否在获得焦点时显示全部可选项(不使用输入框中文字过滤) | boolean | — | false |
762
863
763
864
### Autocomplete Slots
764
865
| name | 说明 |
@@ -777,6 +878,7 @@ export default {
777
878
| 事件名称 | 说明 | 回调参数 |
778
879
| ---------| --------| ---------|
779
880
| select | 点击选中建议项时触发 | 选中建议项 |
881
+ | change | 在 Input 值改变时触发 | 输入框中的值 |
780
882
781
883
### Autocomplete Methods
782
884
| 方法名 | 说明 | 参数 |
0 commit comments