我的页面上有一个搜索框功能,关于它的问题是它需要搜索的一些文本是你在regex中使用的字符,例如/(*)\ etc ...
所以需要搜索的其中一行文本的示例是 " erica Test_121#$%^& **(!@#$%^& *()_ +"引号之间。
return this.options.filter(o => o.text.match( this.keyword ))
以上是问题的要点,我将添加以防万一有人有更好的处理方法,我使用Vue 2.5完整代码减去模板下面
Vue.component('autocomplete-input', {
template: '#autocomplete-input-template',
props: {
options: {
type: Array,
required: true
}
},
data() {
return {
isOpen: false,
highlightedPosition: 0,
keyword: ''
}
},
computed: {
fOptions() {
const re = new RegExp(this.keyword, 'g')
return this.options.filter(o => o.text.match( this.keyword ))
}
},
methods: {
onInput(value) {
this.highlightedPosition = 0
this.isOpen = !!value
},
moveDown() {
if (!this.isOpen) {
return
}
this.highlightedPosition =
(this.highlightedPosition + 1) % this.fOptions.length
},
moveUp() {
if (!this.isOpen) {
return
}
this.highlightedPosition = this.highlightedPosition - 1 < 0 ? this.fOptions.length - 1 : this.highlightedPosition - 1
}
,
select() {
const selectedOption = this.fOptions[this.highlightedPosition]
this.$emit('select', selectedOption)
this.isOpen = false
this.keyword = selectedOption.text
}
}
})
更新以包含Chrome控制台中显示的错误。
[Vue警告] :渲染错误:&#34;语法错误:正则表达式无效: // erica Test_121#$%^&amp; **(!@#$%^&amp; *()_ + //:无需重复&#34;