自动完成 Vue Js
Autocomplete Vue Js
我尝试在 vue js 中添加自动完成功能。但它无法正常工作。加载页面时,所选值 'one' 显示在 v-select 标签中,但 itemsList 未显示在下拉列表中。如何解决?
Select
<v-select
v-model="selected"
:items="itemList"
:search-input.sync="searchInput"
autocomplete
/>
data: function () {
return {
itemList: ['one', 'two'],
searchInput: '',
selected: 'one'
}
},
你不应该使用 v-select 组件。
vuetify 有自己的 autocomplete 组件。
创建 v-autocomplete 并将项目绑定到您的数据:
<v-autocomplete
label="itemList"
:items="itemList"
/>
这是您的脚本数据:
data() {
return {
itemList: [
'one', 'two', 'three',
],
};
}
如果您可以使用第三方插件,请尝试 this-plugin
在模板字段中:
<input
name="tags-select-mode"
v-model="selectedOption"
placeholder="Search"/>
在脚本字段中:
//use this code in mounted
var input = document.querySelector('input[name=tags-select-mode]'),
tagify = new Tagify(input, {
mode : "select",
whitelist: ["first option", "second option", "third option"],
blacklist: ['foo', 'bar'],
dropdown: {
// closeOnSelect: false
}
})
tagify.on('add', onAddTag)
tagify.DOM.input.addEventListener('focus', onSelectFocus)
function onAddTag(e){
console.log(e.detail)
}
function onSelectFocus(e){
console.log(e)
}
您可以使用来自 npmjs.org
的这个组件
import VueMultiSelect from "vue-simple-multi-select";
Vue.component('vue-multi-select', VueMultiSelect);
<vue-multi-select
v-model="album.genre"
:options="genreList"
option-key="id"
option-label="name"
></vue-multi-select>
你仍然可以使用 vue-search-select,首先安装它
npm i vue-search-select 或 yarn add vue-search-select
import { ModelListSelect } from "vue-search-select";
components: {ModelListSelect },
<model-list-select
:isError="validation_errors.insurance_company ? true : false"
:list="compa"
v-model="data.insurance_company"
option-value="id"
option-text="companyName"
placeholder="select Company">
我以为您使用的是 Material Style Vuetify,因此要添加自动完成功能,您必须使用
using v-autocomplete not v-select
这里是示例代码:
<v-autocomplete
v-model="value"
:label="label" // This for set the name of this field
:items="items" // This for set the list items that you want to show
:item-text="itemText" // This for set the object that you want to display
return-object // This will return 1 object of selected data
/>
这里是脚本:
data: () => ({
label: "Autocomplete",
items: [
{
id: 1,
name: "Name Item A"
},
{
id: 2,
name: "Name Item B"
},
],
itemText: "name",
value: null
})
我尝试在 vue js 中添加自动完成功能。但它无法正常工作。加载页面时,所选值 'one' 显示在 v-select 标签中,但 itemsList 未显示在下拉列表中。如何解决?
Select
<v-select
v-model="selected"
:items="itemList"
:search-input.sync="searchInput"
autocomplete
/>
data: function () {
return {
itemList: ['one', 'two'],
searchInput: '',
selected: 'one'
}
},
你不应该使用 v-select 组件。 vuetify 有自己的 autocomplete 组件。 创建 v-autocomplete 并将项目绑定到您的数据:
<v-autocomplete
label="itemList"
:items="itemList"
/>
这是您的脚本数据:
data() {
return {
itemList: [
'one', 'two', 'three',
],
};
}
如果您可以使用第三方插件,请尝试 this-plugin
在模板字段中:
<input
name="tags-select-mode"
v-model="selectedOption"
placeholder="Search"/>
在脚本字段中:
//use this code in mounted
var input = document.querySelector('input[name=tags-select-mode]'),
tagify = new Tagify(input, {
mode : "select",
whitelist: ["first option", "second option", "third option"],
blacklist: ['foo', 'bar'],
dropdown: {
// closeOnSelect: false
}
})
tagify.on('add', onAddTag)
tagify.DOM.input.addEventListener('focus', onSelectFocus)
function onAddTag(e){
console.log(e.detail)
}
function onSelectFocus(e){
console.log(e)
}
您可以使用来自 npmjs.org
的这个组件import VueMultiSelect from "vue-simple-multi-select";
Vue.component('vue-multi-select', VueMultiSelect);
<vue-multi-select
v-model="album.genre"
:options="genreList"
option-key="id"
option-label="name"
></vue-multi-select>
你仍然可以使用 vue-search-select,首先安装它 npm i vue-search-select 或 yarn add vue-search-select
import { ModelListSelect } from "vue-search-select";
components: {ModelListSelect },
<model-list-select
:isError="validation_errors.insurance_company ? true : false"
:list="compa"
v-model="data.insurance_company"
option-value="id"
option-text="companyName"
placeholder="select Company">
我以为您使用的是 Material Style Vuetify,因此要添加自动完成功能,您必须使用
using v-autocomplete not v-select
这里是示例代码:
<v-autocomplete
v-model="value"
:label="label" // This for set the name of this field
:items="items" // This for set the list items that you want to show
:item-text="itemText" // This for set the object that you want to display
return-object // This will return 1 object of selected data
/>
这里是脚本:
data: () => ({
label: "Autocomplete",
items: [
{
id: 1,
name: "Name Item A"
},
{
id: 2,
name: "Name Item B"
},
],
itemText: "name",
value: null
})