Я пытаюсь выделить текст, когда он соответствует тексту, введенному в текстовом вводе.
Так что, если у меня есть эти данные
data: function() {
return {
names:['John', 'Johan', 'Diego', 'Edson']
searchFilter:''
}
}
И этот HTML:
<input type="text" v-model="searchFilter">
<div v-for="b in names">
<p v-html="highlight(b)"></p>
</div>
Если я введу "Joh" на входе, я хотел бы получить в моем HTML:
Джох п
Джох 1017 * *
Diego
Эдсон
<div>
<p><strong>Joh</strong>n</p>
<p><strong>Joh</strong>an</p>
<p>Diego</p>
<p>Edson</p>
</div>
Пока что я написал этот метод, но он выделяет все слова, а не только напечатанные символы.
methods: {
highlight(itemToHighlight) {
if(!this.searchFilter) {
return itemToHighlight;
}
return itemToHighlight.replace(new RegExp(this.searchFilter, "ig"), match => {
return '<strong">' + match + '</strong>';
});
}
}
Любой совет был бы великолепен. Спасибо!