マウスが画像の上にあるときにテキストボックスを取得するコンポーネントを作っていました。VueJS v-if = array [index]が機能しない
以下はHTMLテンプレートです。
<section class="item-container" v-for="(item, index) in items">
<div class="image-box" @mouseenter="changeStatus(index)">
<img class="image" src="item.link" alt>
</div>
<div class="text-box" @mouseleave="changeStatus(index)" v-if="show[index]">
<h4>{{ item.name }}</h4>
<p>{{ item.content }}</p>
</div>
</section>
以下app.js
new Vue({
el: '#app',
data: {
show: [false, false, false],
items: [
{
name: 'Author 1',
content: 'Content 1'
},
{
name: 'Author 2',
content: 'Content 2'
},
{
name: 'Author 3',
content: 'Content 3'
}
]
},
methods: {
changeStatus: function(index) {
this.show[index] = !this.show[index];
console.log(this.show);
console.log(this.show[index]); // console gets it as expected
}
}
});
である私はコードの上に実行すると、私はショーのプロパティが変更されたことを見つけることができます。ただし、v-ifは更新されません。 v-ifにarray [index]を使用できないのですか、それとも別の理由がありますか?
別の 'show'配列の代わりに' item'にブール値を持つことに反対していますか? – mrogers