Понадобился живой поиск, я нашел пример, переработал под себя, в принципе все работает, но в консоли показывает ошибку "
[Vue warn]: Error in callback for watcher "keywords": "TypeError: this.fetch is not a function"".
Вот код:
<template>
<div class="boundary-align">
<input
type="text"
class="uk-input uk-form-large"
v-model="keywords"
/>
<div v-if="results.length > 0">
<ul>
<li
v-for="result in results"
:key="result.id"
v-html="highlight(result.title)"
></li>
</ul>
</div>
</div>
</template>
<script>
export default {
data() {
return {
keywords: null,
results: []
};
},
watch: {
keywords(after, before) {
this.fetch();
}
},
computed: {
fetch() {
axios
.get("/api/search", { params: { q: this.keywords } })
.then(response => (this.results = response.data))
.catch(error => {});
}
},
methods: {
highlight(text) {
return text.replace(
new RegExp(this.keywords, "gi"),
'<span class="highlighted">$&</span>'
);
}
}
};
</script>
Сначала код был без подсветки "
highlight(text)", а
fetch() был прописан в
methods:. Тогда все работало без ошибок, но затем добавил подсветку и
computed: - тогда ошибка появилась.
Как исправить?