删除我的频道功能-const定义的简单数据类型 是不能赋值修改 & 复杂数据类型,在不改变指向情况下,修改数据-arr.push(3)-[1 2 3]可实现
src/views/home/components/channel-edit.vue
中:
- 绑定事件,进行删除
<van-icon @click="delChannel(i,item.id)"></van-icon>
methods里:
// 删除频道
async delChannel (index, channelId) {
try {
// 调用接口
await delChannel(channelId)
// 删除成功
// 提示成功
this.$toast({ type: 'success', message: '删除成功' })
// 更新界面(频道编辑组件,父组件)
// 在 channels 中删除一项
// 注意:父传子的数据,如果是简单数据类型 是不能赋值修改 ,
// 但是如果是复杂数据类型,在不改变指向情况下,修改数据。
// 当删除的频道 在当前频道的前面或者就是当前频道 当前激活频道的索引往前一位
if (index <= this.activeIndex) {
this.$emit('update:activeIndex', this.activeIndex - 1)
}
this.channels.splice(index, 1)
// 通知父组件删除成功,如果删除后激活的频道没有数据,需要加载数据。
// this.$emit('on-delete') 是删除后 激活的频道如果没有数据 通知父组件主动加载一次数据
} catch (e) {
this.$toast({ type: 'fail', message: '删除失败' })
}
},
- 通知父组件,删除成功,需要判断激活的频道是否有数据,没有需要加载。
- 注意:如果组件自动加载了数据,以下逻辑不用实现。
<edit-channel
v-model="showEditChannel"
:channels="channels"
+ @on-delete="changeChannel"
:activeIndex.sync="activeIndex">
</edit-channel>