元素用户界面自动完成无结果

时间:2020-03-03 11:41:51

标签: javascript php vue.js element-ui element-io

我在我的项目element UI autocomplete component中使用。

当输入无结果时,我想显示一条无结果消息。
在其他项目中,我在建议框中将其作为选项(不可选择):

enter image description here

但是,使用element-ui自动完成功能后,搜索图标消失后,下拉菜单也消失了:

enter image description here

使用此组件,我无法做到这一点。有想法吗?

我的代码如下:

模板:

<el-form ref="addressForm" :inline="true" :model="formData">
    <el-form-item prop="city">
        <el-autocomplete
                class="inline-input"
                v-model="formData.cityInput"
                :fetch-suggestions="getCities"
                placeholder="City"
                :trigger-on-focus="false"
                :clearable="true"
                @select="handleSelectCity"
                @clear="clearCity"
                size="small"
        ></el-autocomplete>
    </el-form-item>
        :
        :
    <el-form-item>
        <el-button type="primary" @click="onSubmit" size="small">
            Search
        </el-button>
    </el-form-item>
</el-form>

脚本:

export default {
    data() {
        return {
            formData: {
                cityInput: "",
                city: "",
                :
                :
            },
        }
    },

    methods: {
        getCities(query, callback) {
            this.clearCity();

            // Ajax call to obtain results for autocomplete
            axios.get(
                "/cities", {
                    query: query
                })
                .then(
                    response => {
                        callback(response.data);
                    }
                );

        },

        handleSelectCity(item) {
            this.formData.city = item.value;
        },

        clearCity() {
            this.formData.city = "";
        },

        :
        :
        :
    }
};

PHP代码:(Laravel)

public function getCities($query)
{
    $res = DB::connection('mainDb')
        ->table('offices')
        ->where('city', 'like', $query . '%')
        ->select('city AS value')
        ->distinct()
        ->get();

    return $res;
}

1 个答案:

答案 0 :(得分:0)

您可以使用v-select实现此行为。有filtering option,因此您可以选择选项或使用自动完成功能将其键入下来。

有两个属性可控制“无结果”情况:no-match-text(过滤未给出结果时)和no-data-text(当select中没有选项时)。