I'm using VueJS v2.5.13 and Vuetify v0.17.6.
I'm building a select with autocomplete functionality and whenever the user types something that's not on the list they'll be able to see a action to create a new option as the code below shows:
<template>
<v-select prepend-icon="view_list" :items="options" label="Quick searches" v-model="selected" item-text="label" autocomplete :search-value="inputText" clearable dense>
<template slot="item" slot-scope="data">
<v-flex xs12>
<v-layout>
<v-layout justify-start fill-height align-content-center>
<span>{{data.item.label}}</span>
</v-layout>
<v-layout justify-end row>
<v-icon color="success" @click="edit(data)">mod_edit</v-icon>
<v-icon color="error" @click="del(data)">delete_forever</v-icon>
</v-layout>
</v-layout>
</v-flex>
</template>
<template slot="no-data">
<v-container>
<v-layout row>
<v-layout justify-start fill-height align-content-center>
Create new search
</v-layout>
<v-layout justify-end>
<v-icon color="success" @click="create()">add</v-icon>
</v-layout>
</v-layout>
</v-container>
</template>
</v-select>
How can i access the text the user is typing to create a new 'quick search' using the user autocomplete text as label?
I don't know if there's a more efficient way with Vuetify, but you should be able to just use
v-on:input=handleInput
with ahandleInput
method (or whatever) to receive the value.You can bind it by using
:search-input.sync
:add
searchInput
variable to yourdata
example pen
Additionally, if it seems "laggy" that's because of
debounce-search
property, which adds 200ms delay. You can change it to 0 if you want to catch value every time it's changed:In the template:
In the script