に感謝だろうが、これがお役に立てば幸いです。
var app = new Vue({
el: '#form',
data: {
currentKey: null,
suggestions: [{
message: 'Foo'
}, {
message: 'Bar'
}, {
message: 'Foobar'
}, {
message: 'pikachu'
}, {
message: 'raichu'
}],
active: false
},
methods: {
keyHandler(e) {
if (e.keyCode === 38) {
e.preventDefault();
console.log('arrow up')
this.setActiveClass(this.currentKey, e.key)
this.currentKey = e.key
} else if (e.keyCode === 40) {
e.preventDefault();
this.setActiveClass(this.currentKey, e.key)
console.log('arrow down')
this.currentKey = e.key
}
},
setActiveClass(previousKey, currentKey) {
if (previousKey) {
var tempIndex = this.suggestions.findIndex(x => x.class == "active");
this.$set(this.suggestions[tempIndex], 'class', 'inactive')
if (currentKey === 'ArrowDown') {
if (tempIndex === this.suggestions.length - 1)
this.$set(this.suggestions[0], 'class', 'active')
else
this.$set(this.suggestions[tempIndex + 1], 'class', 'active')
} else {
if (tempIndex === 0)
this.$set(this.suggestions[this.suggestions.length - 1], 'class', 'active')
else
this.$set(this.suggestions[tempIndex - 1], 'class', 'active')
}
} else {
if(currentKey === 'ArrowUp')
this.$set(this.suggestions[this.suggestions.length - 1], 'class', 'active')
else
this.$set(this.suggestions[0], 'class', 'active')
}
}
}
}
})
とHTMLで次の操作を行うことができます
<li v-for="suggestion in suggestions" v-bind:class='suggestion.class'>{{suggestion.message}}
の作業例here
これは完璧です!おかげ – matithedeveloper
あなたのフィドルを変更する方法を私に言うことができるデータがあるときの提案:[ 「フー」、 「バー」、 「FOOBAR」、 「ピカチュウ、 「ライチュウ」]、ここではフィドル次のとおりです。httpsは: //jsfiddle.net/o8fwf0gh/19/「文字列にプロパティ 'クラス'を作成できません」というエラーが表示される – matithedeveloper
私が使用したメソッドは、オブジェクトの配列がある場合にのみ機能します。今は文字列の配列に変更しました。したがって、あなたの新しい要件には解決策がありません。 – Pradeepb