'Vuetify search-input.sync for v-autocomplete inside v-for
I have a line_items
array, iterated using v-for
. For each of the line_item
object, I need a v-autocomplete
element that is used to search for category
.
Currently, I'm using the search-input.sync="searchText"
to do sync search as the user types into the text input box. This works well if there is a single line_item
object, but if there are 2 or more, the searchText
change affects all other line_items
too.
Example code:
<div v-for="line_item in line_items">
<v-autocomplete
:items=""categories
:search-input.sync="searchText"
placeholder="Select category"
></v-autocomplete>
</div>
And I'm using the watch
method from the composition API to watch for changes in searchText
like so:
const searchText = ref(null)
watch(searchText, query => fetchCategories(query))
How do I go about correcting this problem? If possible, I'd really like to keep the .sync
behavior so that the search function fires off whenever user inputs something. TIA!
Solution 1:[1]
@Fahmiin I create a custom component to create rows with autocomplete inside, like:
<QuickOrderForm
v-bind:key="index"
:productIndex="index"
:item="item"
:productOptions="productOptions"
:optionSelected="optionSelected"
:priceFormat="priceFormat"
@update-order-data="productOptionSelected"
/>
And QuickOrderForm
has like this:
template>
<v-row class="rowMain">
<v-autocomplete
v-model="itemSku"
:loading="loading"
:items="resultSearchItem"
:search-input.sync="search"
@focus="resultSearchItem = []"
hide-selected
class="mx-4"
hide-no-data
hide-details
outlined
placeholder="Enter Product SKU"
></v-autocomplete>
<v-text-field
v-model="qty"
placeholder="Qty #"
:disabled="itemSku === '' ? true : false"
outlined
type="number"
></v-text-field>
<v-text-field
prefix="$"
v-model="priceFormat"
outlined
disabled
></v-text-field>
</v-row>
</template>
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Juan Carlos Alfonso Vergel |