私のアプリケーションでは、2つのVueコンポーネントを使用しています。 「日」のリストをレンダリングするものと、「日」ごとに「ロケーション」のリストをレンダリングするもの。たとえば、 "1日目"には "ベルリン"、 "ロンドン"、 "ニューヨーク"という場所があります。vue2でv-forネストされたコンポーネントの親要素で要素が削除された後に更新されない
すべてが表示されますが、日のリストから「1日目」を削除すると、表示が修正されません。これは何が起こるかです:
- 置き換えられて削除された日のタイトル - >正しい
- 置き換えられません削除された日のコンテンツ - >未正しい
Vue.component('day-list', {
props: ['days'],
template: '<div><div v-for="(day, index) in dayItems">{{ day.name }} <a href="#" @click.prevent="remove(index)">Remove day</a><location-list :locations="day.locations"></location-list><br/></div></div>',
data: function() {
return {
dayItems: this.days
}
},
methods: {
remove(index) {
this.dayItems.splice(index, 1);
}
}
});
Vue.component('location-list', {
props: ['locations', 'services'],
template: '<div><div v-for="(location, index) in locationItems">{{ location.name }} <a href="#" @click.prevent="remove(index)"</div></div>',
data: function() {
return {
locationItems: this.locations
}
},
methods: {
remove(index) {
this.locationItems.splice(index, 1);
}
}
});
const app = window.app = new Vue({
el: '#app',
data: function() {
\t return {
\t days: [
{
name: 'Day 1',
locations: [
{name: 'Berlin'},
{name: 'London'},
{name: 'New York'}
]
},
{
name: 'Day 2',
locations: [
{name: 'Moscow'},
{name: 'Seul'},
{name: 'Paris'}
]
}
]
}
},
methods: {}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.3/vue.js"></script>
<div id="app">
<day-list :days="days"></day-list>
</div>
です:あなたはこのエラーを取得する場合は、この質問に対しての答えで説明したように
は、あなたがイベントメカニズムを使用することができます参考のためjsFiddleを動作させる:https://jsfiddle.net/2gab0k3y/ – Mani