美文网首页
element ui input el-autocomplete

element ui input el-autocomplete

作者: 小蝴蝶_037a | 来源:发表于2018-10-10 14:29 被阅读0次

    产品大佬嫌select的远程搜索光标不能单个编辑,于是乎提了要把光标变成单个编辑而不是全选这个需求,我先参考同事的建议想到了手动在focus之后控制触发键盘右键,然后又想到修改element封装源代码,两个解决办法都不靠谱,转了一圈之后发现input也有远程搜索建议功能 ,又在fetch-suggestions参数上踩了很久的坑, 浪费一上午的时间 ,上代码吧 ,希望自己能长记性

    html


    <el-autocomplete

                                class="inline-input"

                                v-model="s_girard"

                                :fetch-suggestions="remoteMethodGirard"

                                placeholder="请输入款号"

                                :trigger-on-focus="false"

                                size="small"

                                :loading="loading"

                                id="1"

                                ></el-autocomplete>


    js:

    remoteMethodGirard(query,cb){

                        let results = [{}]

                        this.s_girard = query;

                        let self = this

                        this.loading = true;

                        $.ajax({

                            headers: {

                                'X-CSRF-TOKEN': $('meta[name="csrf_token"]').attr('content')

                            },

                            type: 'get',

                            url: '/admin/get-giard-key',

                            data: {

                                girard:query

                            },

                            success:function(data){

                                if(data.result.success){

                                    setTimeout(() => {

                                        self.loading = false;

                                        results = data.content

                                        for(i of results){

                                            i.value = i.girard

                                        }

                                            cb(results);

                                    }, 200);

                            }

                            }

                            });

                    },

    值得注意的是:fetch-suggestions 返回参数是queryString, callback(上面的cb)通过调用 callback(data:[]) 来返回。

    为什么选择input组件群下的el-autocomplete 而不是select下的远程搜索?

    因为点击选中时可获取到选中行的附带信息即一个对象, 而select组件下的远程搜索只能选中点击的字符串.

    最最需要注意:

    后台获取的数组中每一个对象必须要有一个value字段, 因为autocomplete只识别value字段并在下拉列中显示(这个我真的ctmd找了很久的bug,感谢度娘,感谢大佬原文章https://blog.csdn.net/qq_37746973/article/details/78402812)

    js也可以参考大佬的高端axios

    //queryString 为在框中输入的值

    //callback 回调函数,将处理好的数据推回

    querySearchAsync(queryString, callback) {

        var list = [{}];

        //调用的后台接口

        let url = 后台接口地址 + queryString;

        //从后台获取到对象数组

        axios.get( url ).then((response)=>{

            //在这里为这个数组中每一个对象加一个value字段, 因为autocomplete只识别value字段并在下拉列中显示

            for(let i of response.data){

                i.value = i.想要展示的数据;  //将想要展示的数据作为value

            }

            list = response.data;

            callback(list);

        }).catch((error)=>{

        console.log(error);

        });

    }

    相关文章

      网友评论

          本文标题:element ui input el-autocomplete

          本文链接:https://www.haomeiwen.com/subject/ufmpaftx.html